• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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?
 

zoom

Antonowka
Registriert
06.03.06
Beiträge
356
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

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
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.
 

zoom

Antonowka
Registriert
06.03.06
Beiträge
356
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
 

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
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!