簡體   English   中英

使用htaccess的簡單301重定向

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM