我的.htaccess转发代理来自A.html到网页模板使用以下模式:
Redirect 301 /A.html http://mysite.com/B.html
由于Redirect
指令需要设置目标主机,是否可以让此规则仅在特定主机上生效?我有一个测试域和一个部署域,并且只希望它在部署域上生效。我可以为Rewrite
规则设置 HTTP 条件,但是如何为 HTTP Redirect
s 设置条件?
答案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
只需将重定向规则放入部署域的 vhost 配置中。这样它就只对此主机有效。
答案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网站。