
我的 A 中有一個重定向規則.htaccess轉發代理來自A.html到B.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網站。