htaccess-multi-language-Website mit sub-Verzeichnisse und default-301

Ich habe einige Probleme meine htaccess zu erlauben, mehrere Sprachen unter Verwendung der sub-directory-Methode z.B.:

http://www.domain.com/en/
http://www.domain.com/sw/
http://www.domain.com/ie/

Auch Dinge zu komplizieren, das Projekt ist derzeit nicht Leben, er ist auf einem dev-server. Zum Beispiel, ich bin gerade auf das Projekt an:

http://dev.domain.com/devname/projectname/

Und ich will die oben automatisch eine 301-Weiterleitung:

http://dev.domain.com/devname/projectname/en/

Hier ist meine htaccess:

Options +FollowSymLinks -MultiViews
RewriteEngine on

# ----------------------------------------------------------------------
# MULTI LANGUAGE SUB DIRECTORY
# ----------------------------------------------------------------------

RewriteCond %{REQUEST_URI} !^/(en|sw)/
RewriteRule ^(.*)$ en/$1 [R=301,L]

# ----------------------------------------------------------------------
# Rewrite rules
# ----------------------------------------------------------------------

## CASE STUDIES ##
RewriteRule ^casestudies/([^/\.]+).html$ index.php?controller=contents&method=viewCasestudy&link=$1 [L,QSA]

## PRODUCTS ##
RewriteRule ^products/([^/\.]+).html$ index.php?controller=contents&method=viewProduct&link=$1 [L,QSA]

RewriteRule ^([a-z{2}]+)(/)?$ index.php?controller=contents&method=viewHome&lang=$1 [L,QSA] # Default load
RewriteRule ^(/)?$ index.php?controller=contents&method=viewHome [L,QSA] # Default load

Die oben wird tatsächlich weitergeleitet werden:

http://dev.domain.com/home/webserver_dir/devname/projectname/en/

..und wenn ich RewriteBase scheint es nur springen...

http://dev.domain.com/en/

Also meine Frage: Wie bekomme ich die language-URLs arbeiten korrekt relativ zu dem Verzeichnis sein, in auf meinem dev-server, und klicken Sie dann optimal funktioniert, wenn es live geht, ohne Umwelt bestimmte Regeln.

Bonus-Frage: muss ich hinzufügen ([a-z{2}]+) bit vor all meinen nachfolgenden rewrite-Regeln, oder kann ich eine catch-all das wird Wirkung alle weiteren Regeln?

BEARBEITEN -----------------------------

Ich reduziere es auf den folgenden vorgeschlagen...

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteBase /devname/projectname/

RewriteCond %{REQUEST_URI} !^/(en|sw)(/|$) [NC]
RewriteRule ^(.*)$ en/$1 [R=301,L]
RewriteRule ^([a-z]{2})/?$ index.php?controller=contents&method=viewHome&lang=$1 [NC,L,QSA] # Default load

... aber jetzt ist es umleiten zu http://dev.domain.com/devname/projectname/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/, irgendwelche Ideen?

Was ist DOCUMENT_ROOT auf Ihre dev.domain.com?
/home/webserver_dir/

InformationsquelleAutor Horse | 2013-10-24

Schreibe einen Kommentar