Der Martin: Problem mit Slash (/) in RewriteRule

Beitrag lesen

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

--
Ich liebe Politiker auf Wahlplakaten.
Sie sind tragbar, geräuschlos, und leicht wieder zu entfernen.
  (Loriot, deutscher Satiriker)