Herzlich willkommen im Archiv vom ABAKUS Online Marketing Forum
Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.
Hmm. Und ich hab das Problem gleich zwei Mal auf zwei Systemen... (Debian-Server und Windows-Entwicklungssystem)Synonym hat geschrieben:Ich kann Dir nur sagen, dass mod_rewrite keine Probleme mit den %2F oder den anderen Zeichen-Codierungen hat, die verwende ich selber auf meinen Seiten.
Die index.php wird gar nicht erst aufgerufen. Selbst wenn ich da direkt oben ein die(); reinschreibe, bekomme ich noch 'nen 404er.Synonym hat geschrieben:Ich würde daher viel eher darauf tippen, dass PHP bzw. die index.php irgendwo den Fehler verursacht, eventuell weiterleitet und dann der Apache die Standard-Fehlerseite auswirft. Sind aber nur Vermutungen...
Code: Alles auswählen
<ul>
<li><a href="item/Foo&Bar">Foo&Bar</a></li>
<li><a href="item/Foo%26Bar">Foo%26Bar</a></li>
<li><a href="item/Foo/Bar">Foo/Bar</a></li>
<li><a href="item/Foo%2FBar">Foo%2FBar</a></li>
</ul>
Code: Alles auswählen
RewriteEngine on
RewriteRule ^item/(.+)$ index.php?action=listitems&which=$1 [L]
Code: Alles auswählen
<?php
print_r($_GET);
?>
Code: Alles auswählen
ErrorDocument 404 /index.php
Hilft leider auch nichtAnna Bolika hat geschrieben:Ich habe die Erfahrung gemacht, dass der Punkt . bei meinen Regexen nicht immer alle Zeichen einschließt. Es gibt Fälle, in denen ich die merkwürdige Konstruktion [\s\S]+ verwendet habe, weil .+ nicht funktioniert hat. Vielleicht funktioniert es ja damit.
Debian habe ich auchHmm. Und ich hab das Problem gleich zwei Mal auf zwei Systemen... (Debian-Server und Windows-Entwicklungssystem)
Das ist natürlich ein Argument.Die index.php wird gar nicht erst aufgerufen. Selbst wenn ich da direkt oben ein die(); reinschreibe, bekomme ich noch 'nen 404er.
Klar, da ist es nicht nötig, und das funktioniert ja auch wie gewünscht. Lediglich der Teil hinter item/ (der ist variabel) wird escaped. Ich habe mal an diversen Stellen das item/ durch item%2F ersetzt und kann bestätigen, dass jedes mal der Server-404er zurückkam.chris21 hat geschrieben:Für item/foo brauchst Du kein urlencode in php.
Ah, danke, jetzt verstehe ich.chris21 hat geschrieben:Ich bezog mich jetzt auf Deinen vierten Fall item/foo%2Fbar - da wird das escapen zum Problem, weil ein %2F in einer URI nicht vorgesehen sind - anders als im Query String, wo es escaped werden muss, da es ein reserviertes Zeichen für die URI Gestaltung ist.
Und wollte damit erläutern, dass dieser vierte Fall überhaupt nicht bei Deinen mod_rewrite Rules ankommt und daher die RewriteRule nicht greift.