mod_rewrite: Beschränkung von Zeichen?

Josh

Legendäres Mitglied
hi alle.

ich habe in meinen mod_rewrite als erste zwei zeichen immer ein kürzel für die sprache:

RewriteRule ^(eg|ch|de|xx)/?(.*)$ main.php [QSA]

nun möchte ich aber diese unschöne statische programmierung dynamisch machen, indem ich bestimme, dass die ersten 2 zeichen immer 2 buchstaben sein sollen. ich habe folgendes versucht, leider hat es nicht geklappt, die beschränkung auf 2 zeichen wirkt nicht, es werden auch mehr zeichen durchgelassen:

RewriteRule ^([a-z]{2})/?(.*)$ main.php [QSA]

Was ist da genau falsch? funktionieren beschränkungen à la {2} oder {1,3} nicht? in php's preg_match geht das wunderbar...
rolleyes.gif


vielen dank für hilfe.
josh
 
QUOTE es werden auch mehr zeichen durchgelassen


Da ist doch auch keine Beschränkung drin?

Wieso setzt du das Fragezeichen?

Ich interpretier mal sprachlich:

CODE ([a-z]{2})

exakt 2 Klein-Buchstaben

CODE /?

Ein oder kein "/"

CODE (.*)

Beliebig viele Zeichen.

Ich schätze mit einer Maskierung vom Fragezeichen kommt das raus was du willst.



CODE RewriteRule ^([a-z]{2})/\?(.*)$ main.php [QSA]
 
nene, mit dem fragezeichen hat dies nix zu tun. das bedeutet nur, dass nach den 2 buchstaben für die sprache plus "/" noch mehr folgen kann "(.*)" oder auch nichts. deshalb wird mit dem ? das (.*) auf optional gestellt...
 
QUOTE nene, mit dem fragezeichen hat dies nix zu tun. das bedeutet nur, dass nach den 2 buchstaben für die sprache plus "/" noch mehr folgen kann "(.*)" oder auch nichts. deshalb wird mit dem ? das (.*) auf optional gestellt...


Was in deinem regulärem Ausdruck begrenzt denn dann effektiv?
Das Fragezeichen ist ein Operator und muss maskiert werden, wenn
Genau ein oder genau kein "/" zu definieren macht doch keinen Sinn, wenn du da was begrenzen möchtest vor dem "/".
Oder was willst du?
 
Zurück
Oben