Establecer condición HTTP para regla de redireccionamiento

Establecer condición HTTP para regla de redireccionamiento

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 Redirectdirectiva 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 Rewritereglas, pero ¿cómo puedo hacerlo para HTTP Redirect?

Respuesta1

Llegué a la solución de que no se puede hacer con Redirectdirectivas puras. Si es necesario redirigir al visitante en determinadas condiciones HTTP, se deben utilizar Rewritereglas.

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.

información relacionada