Rewriterule und get-parameter

Hallo,

ich bin leider nicht so ein Profi in diesem Gebiet, daher hier meine Frage:

Ich rufe mit wget einen Link auf:
wget http://server/abc/def/xyz/12345/

Im Verzeichnis /abc/def/ befindet sich eine .htaccess-Datei mit der folgenden rewriterule:

RewriteRule ^xyz/([a-z0-9]+)/$ xyz.php?action=bla&session=$1 [L]

Er sollte also die Datei xyz.php aufrufen und die GET-Parameter übergeben (action=bla und session=12345
Es tut sich jedoch nichts. Wenn ich mir in der xyz.php über print_r($_GET) ausgeben lasse, was da ankommt, dann schreibt wget ein Datei mit leerem String.

Woran kann das liegen?

Danke im Voraus für Hilfe!

Hi,

ich bin kein Experte in Sachen Rewriterule.
Allerdings kann ich da gerade keinen Fehler feststellen. Der reguläre Ausdruck ist zumindest korrekt formuliert, sofern das mod_rewrite-Modul keinen Slash zu Beginn der Rule voraussetzt (wird genutzt, um Beginn und Ende des RegEx zu erkennen, siehe preg_match in der PHP-Doku, ob man das eine aber auf’s andere beziehen kann, entzieht sich meiner Kenntnis).

Was ich mir vorstellen könnte, wäre das du eine mod-rewrite-spezifische Syntax falsch formuliert hast.

Zu der Sache mit dem Slash,
für einen validen Regex musst du noch einen Slash vor das „^“ setzen.
z.B. so: /^xyz/([a-z0-9]+)/$ xyz.php?action=bla&session=$1

Hilft Dir das weiter?

Vielleicht ein Ansatz um das Problem zu isolieren:
Verschiebe mal das xyz-Verzeichnis so, dass folgende URL gültig ist:
http://server/xyz/12345/
Wenn es dann funktioniert, wirst Du die Verzeichnise abc und def in deiner Rule zusätzlich berücksichtigen müssen.

Beste Grüße

Da in das richtige Verzechnis reingegangen wird und auch die php-Datei aufgerufen wird, gehe ich davon aus, dass es nicht mit dem Slash zusammen hängen kann.
Werde es aber ausprobieren.

Danke erstmal.