Установить HTTP-условие для правила перенаправления

Установить HTTP-условие для правила перенаправления

У меня есть правило перенаправления в моем.htaccessчто пересылает агента изА.htmlкB.htmlиспользуя следующую схему:

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

Поскольку Redirectдиректива требует установки целевого хоста, возможно ли позволить этому правилу преобладать только на определенном хосте? У меня есть и тестовый домен, и домен развертывания, и я хочу его только на домене развертывания. Я могу установить условия HTTP для Rewriteправил, но как я могу сделать это для HTTP Redirects?

решение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Веб-сайт.

Связанный контент