it-swarm.com.de

.htaccess-Sprachumleitungen mit SEO-freundlichen URLs

Wie richte ich meine . Htaccess-Datei ein, um mehrere Sprachen zu erkennen und sie auf bestimmte SEO-freundliche URLs umzuleiten?

Grundsätzlich muss jede URL zu index.php?lang=(...) gehen.

Also, für Englisch Spracherkennung http://mysite.com muss zu http://mysite.com/en/ (index.php?lang=en) gehen.

Meine . Htaccess ab sofort (funktioniert nicht):

RewriteEngine On

RewriteCond %{HTTP:Host} http://mysite.com/

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://mysite.com/en/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://mysite.com/de/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://mysite.com/nl/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://mysite.com/fr/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://mysite.com/es/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(en|de|nl|fr|es)$ index.php?lang=$1 [L,QSA]
2
jlmmns

Du bist fast da. Löschen Sie das allererste RewriteCond (da es nicht erforderlich ist und niemals übereinstimmt) und fügen Sie ein abschließendes / zu Ihrem letzten RewriteRule hinzu, seit Sie mit ihnen umleiten.

RewriteEngine On

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://mysite.com/en/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://mysite.com/de/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://mysite.com/nl/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://mysite.com/fr/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://mysite.com/es/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(en|de|nl|fr|es)/?$ index.php?lang=$1 [QSA,NC,L]
7
Ravi Thapliyal

Hier ist mein Code für Sprach- und Länderparameter. Dies unterstützt jede Sprache:

#www.country.com/index.html  becomes www.country.com/index.php
#www.country.com/fr/index.html  becomes www.country.com/index.php?language=fr
#www.country.com/ca/fr/index.html  becomes www.country.com/index.php?country=ca&language=fr

RewriteRule ^([a-zA-Z]{2})/([a-zA-Z]{2,3})/index\.html$ index.html?country=$1&language=$2
RewriteRule ^([a-zA-Z]{2,3})/index\.html$ index.html?language=$1
RewriteRule ^index\.html$ /index.php [L]
0