
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 Redirect
directiva 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 Rewrite
regras, mas como posso definir HTTP Redirect
s?
Responder1
Cheguei à conclusão de que isso não pode ser feito apenas com Redirect
directivas. Caso seja necessário redirecionar o visitante em determinadas condições HTTP, deverá utilizar Rewrite
regras.
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.