/ / RewriteCond, gdy REQUEST_URI nie pasuje do htaccess apache2 - regex, .htaccess, redirect, apache2, apache2.4

RewriteCond, gdy REQUEST_URI nie pasuje do htaccess apache2 - regex, .htaccess, redirect, apache2, apache2.4

Mam wielojęzyczną stronę z wordpress i chcę przekierować stronę danego regionu do danego języka,

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

bezpośredni dostęp do xyz.de/de i xyz.co.uk/en działają poprawnie. Więc nie ma problemu po stronie wordpress.

Teraz próbuję zmienić plik htaccess xyz.de i xyz.co.uk aby przekierować stronę.

Biorąc pod uwagę xyz.co.uk

Chcę dodać RewriteCond tak, że ilekroć nie ma /en później po xyz.co.uk automatycznie doda /en.

Na przykład xyz.co.uk/<trailing address> prowadzi do xyz.co.uk/en/<trailing address>

Do tej pory mam następujący kod, który jakoś nie działa,

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

Negacja /en nie działa! Próbowałem też

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

Czy ktoś może mi powiedzieć, dokąd zmierza? wygląda na to, że popełniłem błąd, pisząc RegEx i sugerując, czy jest lepszy sposób na osiągnięcie tego samego, co nie ma wpływu na SEO w różnych domenach.

Odpowiedzi:

1 dla odpowiedzi № 1

Posługiwać się THE_REQUEST zmienna zamiast REQUEST_URI:

RewriteCond %{HTTP_HOST} .co.uk$ [NC]
RewriteCond %{THE_REQUEST} !/en/ [NC]
RewriteRule ^ /en%{REQUEST_URI} [L,R=302,NE]
  • Zachowaj tę zasadę jako pierwszą regułę w .htaccess.
  • Zmień na R=301 po przetestowaniu.