設定重定向規則的 HTTP 條件

設定重定向規則的 HTTP 條件

我的 A 中有一個重定向規則.htaccess轉發代理來自A.htmlB.html使用以下模式:

Redirect 301 /A.html http://mysite.com/B.html

由於Redirect指令需要設定目標主機,那麼是否可以讓該規則僅在特定主機上生效?我既有測試域又有部署域,並且只希望它位於部署域上。我可以為規則設定 HTTP 條件Rewrite,但如何為 HTTP 設定呢Redirect

答案1

我得出的解決方案是不能用純Redirect指令來完成。如果需要在某些 HTTP 條件下重新導向訪客,則必須使用Rewrite規則。

答案2

您實際上可以這樣做,但您確實會丟失 301 重定向程式碼。

SetEnvIfNoCase Host "myotherdomain.com" redirectthisdomain

<Files "A.html">
   Order Deny,Allow
   Deny from env=redirectthisdomain

   ErrorDocument 403 http://mysite.com/B.html
</Files>

答案3

只需將重定向規則放入部署域的虛擬主機配置中即可。這樣它只會對該主機有效。

答案4

舉個簡單的例子,如果訪客造訪 dev.example.com/A.html,那麼他們會被重定向到 B.html。如果他們造訪 www.example.com/A.html 那麼他們會被重定向到 C.html;兩者都附帶 301 重定向。

RewriteEngine on
RewriteCond %(HTTP_HOST) ^dev.example.com$ [NC]
RewriteCond %(REQUEST_URI) ^/A.html
RewriteRule ^(.*)$ http://dev.exmaple.com/B.html [R=301]

RewriteCond %(HTTP_HOST) !^dev.example.com$ [NC]
RewriteCond %(REQUEST_URI) ^/A.html
RewriteRule ^(.*)$ http://dev.exmaple.com/C.html [R=301]

您可以閱讀更多有關Apache 的 Mod_Rewrite網站。

相關內容