• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

RewriteRule-Problem

Status
Für weitere Antworten geschlossen.
E

Efchen

Guest
Moin,

was mache ich falsch?

Code:
RewriteRule ^foo(.*).php$ /verzeichnis/foo.php?bar=$1
funktioniert, wenn ich als URL http://server/foobar.php eingebe (dann wird /verzeichnis/foo.php?bar=bar aufgerufen).

Ich möchte aber, dass man http://server/verzeichnis/foobar.php eingeben kann und habe die RewriteRule daher so geändert:

Code:
RewriteRule ^/verzeichnis/foo(.*).php$ /verzeichnis/foo.php?bar=$1
Dann kriege ich aber einen 404er Fehler.

Meine Vermutung war, dass der führende Slash zuviel sein könnte, aber
Code:
RewriteRule ^verzeichnis/foo(.*).php$ /verzeichnis/foo.php?bar=$1
liefert mir einen 500er Fehler.

Wo ist mein Denk- oder sonstiger Fehler?

Danke,
-Efchen
 
Hallo,

verzeichnis/foo.php?bar=$1 wird durch die Regel auch wieder gematched. Wenn du (.*) durch (.+) ersetzt, dann matcht er auch nur die foo*.php, die wirklich ein Anhängsel haben.


N43
 
Hilft das Tauschen der Regeln?

Code:
RewriteRule ^verzeichnis/foo(.*).php$ /verzeichnis/foo.php?bar=$1 [B][L][/B]
RewriteRule ^foo(.*).php$ /verzeichnis/foo.php?bar=$1
Ich sehe nicht, wo sich das Ergebnis unterscheided.
 
Ich habe nur eine RewriteRule, nicht zwei. Und der Unterschied soll ja sein, dass man die URL nur in diesem einen Unterverzeichnis aufrufen kann.
 
Wieso? Es heißt doch am Ende ".php$", also dass nach der Endung .php nichts mehr kommt. Oder werden Parameter nicht gematched?
Jup, das Matching betrifft nur den Dateinamen / Pfad.

Ich hab das ganze mal ausprobiert. Mit .* bleibt man an einer ewigen Weiterleitung hängen. (Sieht man auch, wenn man R=301 setzt, dann bricht der FireFox iwann. ab). Mit .+ klappt es.


N43
 
Ich habs jetzt übrigens hinbekommen. Ich glaube, Dein Hinweis mit dem + war wirklich der entscheidende Tipp. Geht jetzt alles so, wie ich das will und ist eigentlich auch nicht so kompliziert - wenn man RegExps kann ;-)

Gute Nacht und danke nochmal!
-Efchen
 
ich habe ungefährt dasselbe problem.

ich habe nun eine htaccess erstellt, dort steht

HTML:
RewriteEngine On
RewriteRule ^information/$ /?section=information
wenn ich nun meine seite aufrufe unter http://domain.de/information/ zeigt dieser mir den serverfehler 500 an. ist irgendwas falsch geschrieben oder ähnl.?

muss ich evtl. irgendwie noch in der apache cfg mod rewrite einschalten?
 
Ja, ich denke deswegen kommt der Fehler. Du hättest im IRC ruhig sagen können, dass das einen 500-Fehler wirft.
 
Wenn kein mod_rewrite angeschaltet ist (also das Modul nicht geladen wird), kommt auch kein 500er. Der Fehler kommt nur, wenn jemand das auch versucht zu parsen.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben