Estoy tratando de crear un ReWriteEngine
regla (s) para un sitio que mantengo. El sitio tiene dos variaciones de dominio .co.uk
y .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 № 1Es 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.