/ / ReWriteEngine haciendo lo contrario de lo que se desea: .htaccess, mod-rewrite

ReWriteEngine haciendo lo contrario de lo que se desea: .htaccess, mod-rewrite

Estoy tratando de crear un ReWriteEngine regla (s) para un sitio que mantengo. El sitio tiene dos variaciones de dominio .co.uky .com. Lo que estoy buscando hacer es tener .com reescribir a .co.uk pero también siempre asegúrese de que el www. parte está al principio.Sin embargo, estoy obteniendo un comportamiento inverso e impredecible. Consulte esta tabla para ver la reescritura deseada y lo que realmente estoy obteniendo. ReWriteCond y ReWriteRule se basaron en otras preguntas de Stackoverflow sobre un problema similar.

|    URL ENTERED    |   URL REWRITTEN   |  DESIRED REWRITE  | SUCCESS |
|-------------------|-------------------|-------------------|---------|
| www.example.com   | example.co.uk     | www.example.co.uk | No      |
| example.com       | www.example.co.uk | www.example.co.uk | Yes     |
| example.co.uk     | example.co.uk     | www.example.co.uk | No      |
| www.example.co.uk | www.example.co.uk | www.example.co.uk | Yes     |

Reescribir regla y condición

RewriteCond %{HTTP_HOST} ^(www.)?example.com  [NC]
RewriteRule ^(.*)  http://www.example.co.uk/$1     [R=301,L,NC]

Respuestas

1 para la respuesta № 1

Es posible que vea un redireccionamiento en caché si se le redirige a example.co.uk (no www) ya que su directiva actual no hace esto. Sin embargo, si desea redirigir no www y www.example.com entonces necesitarás dos condiciones:

RewriteCond %{HTTP_HOST} ^www.example.com [NC,OR]
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule (.*) http://www.example.co.uk/$1 [R=301,L]

Entonces, si accede a través de www.example.com o el nombre de host lo hace no comienzo www. luego redirigir. (example.com es atrapado por la segunda condición.)

Retiró el NC bandera de la RewriteRule ya que es superfluo aquí (.* coincide con todo, independientemente del caso).

Borre la memoria caché de su navegador antes de realizar la prueba. Cambio R=302 a R=301 sólo cuando esté seguro de que funciona correctamente.