/ / RewriteCond cuando REQUEST_URI no coincide con htaccess apache2 - regex, .htaccess, redirect, apache2, apache2.4

RewriteCond cuando REQUEST_URI no coincide con htaccess apache2 - regex, .htaccess, redirect, apache2, apache2.4

Tengo un sitio web de wordpress multilingüe y quiero redirigir el sitio web de una región determinada a un idioma determinado.

xyz.de --> xyz.de/de/
xyz.co.uk --> xyz.co.uk/en/

acceso directo a xyz.de/de y xyz.co.uk/en están funcionando correctamente. Así que no hay problema en el lado de wordpress.

Ahora, estoy tratando de cambiar el archivo htaccess de xyz.de y xyz.co.uk Para que redirijan el sitio web.

Teniendo en cuenta xyz.co.uk

Quiero agregar un RewriteCond tal que siempre que no haya /en después de xyz.co.uk se agregará automáticamente /en.

Por ejemplo xyz.co.uk/<trailing address> resultados en xyz.co.uk/en/<trailing address>

Hasta ahora tengo el siguiente código, que de alguna manera no parece funcionar,

RewriteCond %{REQUEST_URI} !^/en
RewriteRule ^(.*)$ http://xyz.co.uk/en/$1 [L]

La negacion de /en ¡no está trabajando! También he intentado

RewriteCond %{REQUEST_URI} !/en
RewriteRule ^(.*)$ http://xyz.co.uk/en/$1 [L]

¿Podría alguien decirme a dónde me voy mal? Parece que me he equivocado al escribir RegEx y sugerir que si hay una mejor manera de lograr lo mismo, eso no afecta el SEO en diferentes dominios.

Respuestas

1 para la respuesta № 1

Utilizar THE_REQUEST variable en lugar de REQUEST_URI:

RewriteCond %{HTTP_HOST} .co.uk$ [NC]
RewriteCond %{THE_REQUEST} !/en/ [NC]
RewriteRule ^ /en%{REQUEST_URI} [L,R=302,NE]
  • Asegúrese de mantener esta regla como su primera regla en .htaccess.
  • Cambiarlo a R=301 una vez que hayas probado.