Definir condição HTTP para regra de redirecionamento

Definir condição HTTP para regra de redirecionamento

Tenho uma regra de redirecionamento no meu.htaccessque encaminha agente deA.htmlparaB.htmlusando o seguinte padrão:

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

Uma vez que a Redirectdirectiva exige a definição do anfitrião alvo, é possível deixar esta regra prevalecer apenas num anfitrião específico? Tenho um domínio de teste e de implantação e só quero isso no domínio de implantação. Posso definir condições HTTP para Rewriteregras, mas como posso definir HTTP Redirects?

Responder1

Cheguei à conclusão de que isso não pode ser feito apenas com Redirectdirectivas. Caso seja necessário redirecionar o visitante em determinadas condições HTTP, deverá utilizar Rewriteregras.

Responder2

Na verdade, você pode fazer isso, mas perde o código de redirecionamento 301.

SetEnvIfNoCase Host "myotherdomain.com" redirectthisdomain

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

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

Responder3

basta colocar a regra de redirecionamento na configuração do vhost do seu domínio de implantação. desta forma ele estará ativo apenas para este host.

Responder4

Um exemplo rápido: se o visitante acessar dev.example.com/A.html, ele será redirecionado para B.html. Se eles acessarem www.example.com/A.html, serão redirecionados para C.html; ambos com o redirecionamento 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]

Você pode ler mais sobreMod_Rewrite no Apachelocal na rede Internet.

informação relacionada