
У меня есть правило перенаправления в моем.htaccessчто пересылает агента изА.htmlкB.htmlиспользуя следующую схему:
Redirect 301 /A.html http://mysite.com/B.html
Поскольку Redirect
директива требует установки целевого хоста, возможно ли позволить этому правилу преобладать только на определенном хосте? У меня есть и тестовый домен, и домен развертывания, и я хочу его только на домене развертывания. Я могу установить условия HTTP для Rewrite
правил, но как я могу сделать это для 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]
Вы можете прочитать больше оMod_Rewrite в ApacheВеб-сайт.