Mal wieder mod_rewrite

Tribal

Grünschnabel
Hallo zusammen,

habe folgendes Problem:

Wir haben eine Webseite bei der mittels mod_rewrite "schönere" Urls ausgegeben werden sollen.

Bisher sah es so aus: http://www.example.com/index.php?pid=1 (example.com nur als Beispiel)

Da wir die Seite jetzt auch mehrsprachig gestalten wollen habe ich mit mod_rewrite schon etwas "gebastelt".

Jetzt wird bspw. aus http://www.example.com/de/12 dank mod_rewrite http://www.example.com/index.php?lang=de&pid=12

Soweit so gut.

Wenn man aber jetzt einfach die Domain http://www.example.com im Browser eingibt, kommt zwar die Index Seite, allerdings Status 404. Dasselbe kommt, wenn ich zum Beispiel nur http://www.example.com/de oder http://www.example.com/de/ eingebe. Wie kann man diese Sonderfälle abfangen? In den Fällen soll einfach nur die index.php aufgerufen werden, die Parameter werden dann in der Seite abgefangen.

Hier noch meine htaccess:
Code:
Options -MultiViews 
RewriteEngine on
RewriteRule (de|en)/(.*)$ /index.php?lang=$1&pid=$3 [QSA]

Vielen Dank für Eure Anregungen

Gruß

Tribal
 
Die Regeln werden von oben nach unten durchlaufen und die erste die passt wird genommen. Also erstell für die Fälle einfach einen neue Regel über der jetzigen.

Code:
RewriteRule ^/?(de|en)?/?$ /index.php [QSA]
 
Hallo CPoly,

ich hatte das vorhin so gelöst:

Code:
RewriteCond %{REQUEST_URI} ^[-_0-9a-z]{0,20}/de$ [NC]
RewriteRule ^[-_0-9a-z]{0,20}$ index.php?lang=de [NC,QSA]

RewriteCond %{REQUEST_URI} ^[-_0-9a-z]{0,20}/en$ [NC]
RewriteRule ^[-_0-9a-z]{0,20}$ index.php?lang=en [NC,QSA]

Hat auch funktioniert, Deine Lösung ist aber einfacher und somit besser. Vielen Dank dafür.

Ich merke, ich muß mich dringend mit regulären Ausdrücken und mod_rewrite auseinandersetzen, ist ne mächtige Waffe.. :)

Gruß

Tribal
 

Neue Beiträge

Zurück