Problem mit Slash (/) in RewriteRule
SE
- https
0 Der Martin0 SE
Hallo allerseits,
ich habe folgendes RewriteRule:
RewriteRule ^suche_([^_]*).html index.php?suche=$1 [L]
Dieses funktioniert auch einwandfrei. Es streikt aber, sobald als Suchparameter ein maskierter Slash (%2F) enthält. Der Apache liefert dann einen 404.
Gibt es hierfür eine Lösung?
Hi,
ich habe folgendes RewriteRule:
RewriteRule ^suche_([^_]*).html index.php?suche=$1 [L]
das Problem hast du schon klar erkannt.
Dieses funktioniert auch einwandfrei. Es streikt aber, sobald als Suchparameter ein maskierter Slash (%2F) enthält. Der Apache liefert dann einen 404.
Natürlich, er kann nicht anders. Auf den Request
/suche_montag/dienstag.html
wird der Apache ein Verzeichnis /suche_montag suchen, und darin die Datei dienstag.html ausliefern wollen. Die URL-Codierung mit %2F hilft hier nicht, weil die sofort beim Analysieren des Requests decodiert wird.
Gibt es hierfür eine Lösung?
Für dieses Detailproblem nicht, aber vielleicht für die gesamte Aufgabe:
Ändere dein URL-Schema auf /suche/foobar (tausche also den Unterstrich gegen einen normalen Slash). Dann kann /suche ein PHP-Script sein, das automatisch alles, was nach /suche in der URL folgt, als $_SERVER['PATH_INFO'] erhält.
Vorteile:
* Das ".html" am Ende fällt weg (okay, wäre bei deinem Ansatz auch möglich)
* Der unschöne Unterstrich ist weg
* Diese Lösung käme sogar ohne mod_rewrite aus
So long,
Martin
Ok, vielen Dank für die Auskunft :)
Gruß
Sebastian