You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Tim Hildebrandt <TC...@gmx.net> on 2006/06/28 13:38:35 UTC

Frage zu mod_rewrite Regel - Da funzt was nicht...

Hallo zusammen,

ich habe mal eine Frage zu mod_rewrite und den entsprechenden Regeln, die
mir Addressen in die entsprechenden PHP-Variabeln umsetzen.

Ich habe ein standardisiertes URL-Format, mit dem ich ganz bestimmte Werte
in ein durch PHP abgebildetes System überführe. Die URL sieht folgendermaßen
aus:

http://www.meinedomain.de/page,156587,0,0,0,100,0,de.htm

Die verschiedenen Parameter werden nun mit folgender mod_rewrite-Regel
übersetzt (in zwei Zeilen, damit es übersichtlicher bleibt):

RewriteRule
^([0-9a-zA-Z]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([a-z]
*)\.htm$
ordner1/index.php?page=$1&xid=$2&tid=$3&zid=$4&offset=$5&limit=$6&print=$7&c
hange_language=$8&mod_rewrite=1 [L]


Jetzt ist es aber nötig geworden, dass die standardisierte URL, wie sie oben
gezeigt wird, um einen Parameter erweitert werden soll. Für eine Wortliste
(Lexikon) möchte ich auf der abbildenden Website noch den Anfangsbuchstaben
für die Filterung mit übermitteln. Also z.B: 

http://www.meinedomain.de/page,156587,0,0,0,100,0,de,w.htm

Es kommt also vor dem ".htm" nur noch ein weiterer Parameter hinzu.

Die Regel sollte eigentlich kein Problem darstellen, wie ich dachte. Ich
hatte eine Funktionierende Regel ja bereits erstellt und wollte diese
nunmehr durch das Hinzufügen einer weiteren Klammer (Sprich Buchstabengruppe
[a-z]{1}) in einer weitere PHP-Variabel (letter=$9) transformieren:

RewriteRule
^([0-9a-zA-Z]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([a-z]
*),([a-z]+)\.htm$
ordner1/index.php?page=$1&xid=$2&tid=$3&zid=$4&offset=$5&limit=$6&print=$7&c
hange_language=$8&letter=$9&mod_rewrite=1 [L]


Doch wenn ich jetzt eine Seite mit der neuen syntax aufzurufen versuche,
erhalte ich einen Fehler "Seite wurde nicht gefunden". Kann mir jemand
erklären, warum eine im prinzip identische und problemlos arbeitende Regel
in erweiterter Form (um eine Klammer und eine PHP-Variabel) plötzlich  nicht
mehr funktioniert?


Liebe Grüße
Tim



--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


RE: Frage zu mod_rewrite Regel - Da funzt was nicht...

Posted by Tim Hildebrandt <TC...@gmx.net>.
Hallo René,

ich bin baff.  Ich habe die Regeln auf meinem Rechner vertauscht. Zuerst
hatte ich die längere Regel (die mit der Klammer mehr) vor der kürzeren
Regel und da hat's geknallt. Ich habe die Regeln jetzt mal vertauscht,
sprich die kürzere vor die längere geschreiben und siehe da... es ging.
Fragt sich nur, warum so herum?

[Antwort nicht zwingend nötig. Läuft ja jetzt]


Danke dennoch für die Hilfe

Tim


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Frage zu mod_rewrite Regel - Da funzt was nicht...

Posted by Ren� Thiel <re...@rennkuckuck.de>.
Kann keinen Fehler finden, läuft unter:

Apache/2.0.55 (Win32)
Apache/1.3.27 (Win32)
Apache/1.3.27 (Linux/SuSE)

PHP hat ja damit nix zu tun, aber die conf-Datei(en) wären
interessant (schrieb gestern ermüdeterweise ini).

> Kann es was mit dem [L] Flag am Ende der Zeile zu tun haben?

Nein.

> Soweit ich mich da eingelesen habe bedeutet das ja nur, dass bei einem
> Treffer die Folgezeilen nicht mehr berücksichtigt werden sollen...

Richtig.


Gruß
René Thiel (Rennkuckuck)
mailto:reti@rennkuckuck.de
--
http://rennkuckuck.de - Die Rumänien-Seiten
http://karpatenferien.de - Ferien in Rumänien
http://rtol.de - Dynamische Webseiten mit PHP, mySQL und CSS





--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


RE: Frage zu mod_rewrite Regel - Da funzt was nicht...

Posted by Tim Hildebrandt <TC...@gmx.net>.
Hallo René,

> Kann ich leider nicht nachvollziehen, hier [1] klappt's genau 
> so, wie Du's geschrieben hast. Vielleicht hilft ja die Angabe 
> der Serverdaten ein wenig weiter (Version, ini)

Apache 2.0.50 auf 'nem Linux-Rechner, PHP 5.0.3


> 
> [1] http://rtol.de/test2/page,156587,0,0,0,100,0,de,w.htm

Ist wirklich seltsam. Diese "dumme" runde Klammer mehr kann doch keinen
Fehler verursachen. Ich habe schon geschaut, ob die Ornernamen, der
PHP-Dateiname etc. korrekt angegeben ist, aber einen Fehler habe ich nicht
gefunden. Kann es was mit dem [L] Flag am Ende der Zeile zu tun haben?
Soweit ich mich da eingelesen habe bedeutet das ja nur, dass bei einem
Treffer die Folgezeilen nicht mehr berücksichtigt werden sollen... 

Grüße
Tim


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Frage zu mod_rewrite Regel - Da funzt was nicht...

Posted by Ren� Thiel <re...@rennkuckuck.de>.
Hallo Tim,

RewriteRule
^([0-9a-zA-Z]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([a-z]*),([a-z]+)\.htm$
ordner1/index.php?page=$1&xid=$2&tid=$3&zid=$4&offset=$5&limit=$6&print=$7
&change_language=$8&letter=$9&mod_rewrite=1 [L]


> Doch wenn ich jetzt eine Seite mit der neuen syntax aufzurufen versuche,
> erhalte ich einen Fehler "Seite wurde nicht gefunden". Kann mir jemand
> erklären, warum eine im prinzip identische und problemlos arbeitende Regel
> in erweiterter Form (um eine Klammer und eine PHP-Variabel) plötzlich  nicht
> mehr funktioniert?

Kann ich leider nicht nachvollziehen, hier [1] klappt's genau so, wie Du's
geschrieben hast. Vielleicht hilft ja die Angabe der Serverdaten ein wenig
weiter (Version, ini)


[1] http://rtol.de/test2/page,156587,0,0,0,100,0,de,w.htm


Gruß
René Thiel (Rennkuckuck)
mailto:reti@rennkuckuck.de
--
http://rennkuckuck.de - Die Rumänien-Seiten
http://karpatenferien.de - Ferien in Rumänien
http://rtol.de - Dynamische Webseiten mit PHP, mySQL und CSS





--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------