[英]Simple 301 redirect with htaccess
我想從不再活動的頁面重定向URL。 URL https://tchibo.academyofsports.promo/以及所有子頁面都應重定向到URL http://www.academyofsports.de/ 。 這是我到目前為止(.htaccess)的內容:
#Redirects
RewriteEngine On
RewriteRule https://tchibo.academyofsports.promo/ http://www.academyofsports.de/ [L,R=301]
不幸的是,它不能以這種方式工作。 我究竟做錯了什么?
這可能是您要尋找的:
RewriteEngine On
RewriteCondition %{HTTP_HOST} ^tchibo\.academyofsports\.promo$ [NC]
RewriteRule ^/?(.*)$ http://www.academyofsports.de/$1 [L,R=301]
原因是RewriteRule
僅在請求的URL的路徑組件上運行,它看不到主機名。 上面的規則在http服務器主機配置和動態配置文件中也應同樣起作用。
如果您對最初請求的路徑不感興趣,但想將所有人重定向到入口點,則可以將以上內容簡化為:
RewriteEngine On
RewriteCondition %{HTTP_HOST} ^tchibo\.academyofsports\.promo$ [NC]
RewriteRule ^ http://www.academyofsports.de/ [L,R=301]
還有一個一般性提示:您應該始終喜歡將此類規則放置在http服務器(虛擬)主機配置中,而不是使用動態配置文件( .htaccess
樣式文件)。 眾所周知,這些文件容易出錯,難以調試,並且確實降低了服務器的速度。 僅當您無法控制主機配置(閱讀:真正便宜的托管服務提供商)或者您的應用程序依賴於編寫自己的重寫規則(這顯然是安全噩夢)時,才提供它們作為最后的選擇。 )。
對您在下面的評論做出回應,我想添加以下內容:
要實現特定的映射,您還可以添加例外規則:
RewriteEngine On
RewriteCondition %{HTTP_HOST} ^tchibo\.academyofsports\.promo$ [NC]
RewriteRule ^/?agb\.html$ http://www.academyofsports.de/Datenschutz [L,R=301]
RewriteCondition %{HTTP_HOST} ^tchibo\.academyofsports\.promo$ [NC]
RewriteRule ^/?(.*)$ http://www.academyofsports.de/$1 [L,R=301]
問題是由於重寫模塊的內部邏輯,您必須為每個單個規則重復條件。 有一個或兩個簡單的解決方法可以解決此問題,但這種方法很難快速維護。 如果需要指定多個此類異常規則,則可以RewriteMap
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.