
Tengo una regla de redireccionamiento en mi.htaccessque reenvía agente desdeA.htmlaB.htmlusando el siguiente patrón:
Redirect 301 /A.html http://mysite.com/B.html
Dado que la Redirect
directiva exige establecer el host de destino, ¿es posible permitir que esta regla prevalezca sólo en un host específico? Tengo un dominio de prueba y de implementación, y solo lo quiero en el dominio de implementación. Puedo establecer condiciones HTTP para Rewrite
reglas, pero ¿cómo puedo hacerlo para HTTP Redirect
?
Respuesta1
Llegué a la solución de que no se puede hacer con Redirect
directivas puras. Si es necesario redirigir al visitante en determinadas condiciones HTTP, se deben utilizar Rewrite
reglas.
Respuesta2
De hecho, puedes hacer esto, pero perderás el código de redireccionamiento 301.
SetEnvIfNoCase Host "myotherdomain.com" redirectthisdomain
<Files "A.html">
Order Deny,Allow
Deny from env=redirectthisdomain
ErrorDocument 403 http://mysite.com/B.html
</Files>
Respuesta3
simplemente coloque la regla de redireccionamiento en la configuración de vhost de su dominio de implementación. de esta manera sólo estará activo para este host.
Respuesta4
Un ejemplo rápido, si el visitante va a dev.example.com/A.html, será redirigido a B.html. Si van a www.example.com/A.html, serán redirigidos a C.html; ambos con la redirección 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]
Puedes leer más sobreMod_Rewrite en Apachesitio web.