1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[Apache] mod_rewrite Problem mit optionalen Parametern

Dieses Thema im Forum "PHP & Co." wurde erstellt von Slashwalker, 17.01.10.

  1. Slashwalker

    Slashwalker Winterbanana

    Dabei seit:
    15.05.06
    Beiträge:
    2.190
    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?
     
  2. zoom

    zoom Antonowka

    Dabei seit:
    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
     
    Slashwalker gefällt das.
  3. Slashwalker

    Slashwalker Winterbanana

    Dabei seit:
    15.05.06
    Beiträge:
    2.190
    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.
     
  4. zoom

    zoom Antonowka

    Dabei seit:
    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
     
  5. Slashwalker

    Slashwalker Winterbanana

    Dabei seit:
    15.05.06
    Beiträge:
    2.190
    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!
     

Diese Seite empfehlen