• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

[Apache] mod_rewrite Problem mit optionalen Parametern

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
Hallo ATler,
ich habe hier folgende .htaccess:
Code:
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)    index.cfm?id=$2&lang_code=$1    [QSA]

Damit kann ich nun meine Seite über http://localhost/de/startseite oder http://localhost/en/startseite aufrufen.
Mein Problem ist nun, das ich den Parameter für die Sprache als optionalen Parameter haben möchte.

Meine index.cfm kann damit umgehen, wenn keine Sprache übergeben wird. Aber die RewriteRule übergibt bei http://localhost/startseite den Wert startseite als Sprache.

Es würde natürlich funktionieren, wenn ich die Reihenfolge änder, das sieht dann aber nicht so prickelnd aus: http://localhost/startseite/de

Und ich meine das gewünschte Verhalten schon bei zig Sites gesehen zu haben. Jemand 'ne Idee?
 
Hallo,

probiere mal folgende .htaccess aus:
Code:
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# ----- mit Sprachangabe -----
RewriteRule ^(de|en)/?$ index.cfm?lang_code=$1 [NC]
RewriteRule ^(de|en)/([a-zA-Z0-9_-]+)/?$ index.cfm?id=$2&lang_code=$1 [NC]
# ----- ohne Sprachangabe -----
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.cfm?id=$1 [QSA]
Wenn hinter der Domain /de oder /en angegeben ist, dann greifen die ersten beiden Regeln. Ansonsten greift die dritte Regel.

Gruß zoom
 
  • Like
Reaktionen: Slashwalker
Danke, aber das hilft leider nur bedingt. Sorry hatte ich falsch beschrieben. Die Sprache muss natürlich variabel sein. Kann also auch mal dk, fr oder it sein.
 
Du wirst ja eine begrenzte Zahl an Sprachen zur Verfügung stellen können? Die fügst du bei den ersten beiden Regel halt mit ein. (de|en|dk|fr)... Soll das dennoch variabler sein (was nicht unbedingt Sinn macht), kann man sich eine Bedingung überlegen, bei der nur zweistellige Strings als Sprachen interpretiert werden.

Gruß zoom
 
Ich werd es anders machen. Die Sprachen die zur Verfügung stehen, sind ja in der Datenbank hinterlegt. Also lese ich diese aus und füge sie per Script in die .htaccess ein. Sollte passen.

Danke für deine Hilfe!