我需要重定向一些 URL,因為它們指向同一頁面。例如:
https://www.example.com/home
https://www.example.com/Home
https://www.example.com/index.php
所有這些 URL 都需要重新發送到:
https://www.example.com/
所以我在 .htaccess 檔案中使用它作業正常:
Redirect 301 /home https://www.example.com/
但問題是當我嘗試訪問這樣的 URL 時:
https://www.example.com/home/sub
它重定向到導致 404:
https://www.example.com//sub
我需要這個 URL 才能正常作業,而不是 404 或任何重定向:
https://www.example.com/home/sub
uj5u.com熱心網友回復:
Redirect 301 /home https://www.example.com/
因為 mod_aliasRedirect指令是前綴匹配的,匹配后的所有內容都被復制到目標 URL 的末尾。因此,當您請求時/home/sub,將 ,/sub復制到https://www.example.com/,從而導致https://www.example.com//sub.
我想你也有 mod_rewrite 指令。.htaccess您應該避免混合來自兩個模塊的重定向,因此請嘗試以下操作,而不是在根檔案頂部使用 mod_rewrite :
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(home|index\.php)$ / [R=301,L]
檢查環境變數的條件REDIRECT_STATUS確保只處理直接請求,而不是內部重寫的請求,后者將由具有前端控制器模式(我假設您在檔案后面有)產生。
您需要清除瀏覽器快取,因為錯誤的 301(永久)重定向將被瀏覽器快取。使用 302 進行測驗以避免潛在的快取問題。
參考:
- https://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirect
- https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewriterule
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/511822.html
