Ich habe eine mehrsprachige Website. Jede Datei gibt es nur einmal, mit hilfe von PHP wird die jeweils passende Sprache angezeigt.
Also es gibt auf dem Server nur einmal die Datei:
www.domain.de/Kontakt/Kontakt.php
Diese kann aber in 4 Sprachen aufgerufen werden. Damit die Unterscheidung für den Besucher leichter ist, habe ich per ModRewrite die URLs so umgeschrieben, dass immer ein Sprachcode zu sehen ist.
RewriteRule ^ger/(.*)$ /$1?setlang=ger
RewriteRule ^en/(.*)$ /$1?setlang=en
Die Umschaltung der Sprache erfolgt jeweils über einen Link der zur Startseite führt
RewriteRule ^ger/index.php$ /index.php?setlang=ger
RewriteRule ^en/index.php$ /index.php?setlang=en
Soweit funktioniert auch alles wunderbar. Das problem ist, dass in den Suchmaschinen noch alte Links zu finden sind, die als URL statt
www.domain.de/ger/Kontakt/Kontakt.php so aussehen:
www.domain.de/Kontakt/Kontakt.php
Wie kann ich es nun schaffen, dass diese direkt über Suchmaschinen aufgerufenenn Links umgeschrieben werden?
Ich habe es z.B. so versucht:
RedirectMatch 301 ^/Kontakt/(.*)$ https://www.domain.de/ger/Kontakt/$1
Aber alle Lösungen die so aufgebaut sind, enden bisher in einer endlosen Schleife, so dass der Browser abbricht. Hier meine bisherige htaccess Datei:
Code: Alles auswählen
RewriteEngine On
Options +FollowSymLinks
RewriteBase /
RewriteRule ^ger/index.php$ /index.php?setlang=ger
RewriteRule ^en/index.php$ /index.php?setlang=en
RewriteRule ^ger/(.*)$ /$1?setlang=ger
RewriteRule ^en/(.*)$ /$1?setlang=en
ErrorDocument 404 http://www.domain.de/index.php
ErrorDocument 400 http://www.domain.de/index.php
ErrorDocument 401 http://www.domain.de/index.php
ErrorDocument 403 http://www.domain.de/index.php
ErrorDocument 500 http://www.domain.de/index.php
#Redirect old Google urls (div. Versuche, nicht hat bisher funktioniert)
#RewriteRule ^Kontakt/(.*)$ /ger/Kontakt/$1 [R=301,L]
RedirectMatch 301 ^/$ http://www.domain.de/ger/
RedirectMatch 301 ^/Kontakt/(.*)$ http://www.domain.de/ger/Kontakt/$1