Einfacher Regex macht Probleme mit %2F vs /
Verfasst: 22.09.2010, 23:40
Hi,
Ich habe einen sehr simplen Regex:
RewriteRule ^item/(.+)$ index.php?action=listitems&which=$1 [L]
Das funktioniert auch ganz gut für URLs à la "item/Foo" oder auch "item/Foo & Bar". Problematisch wird es mit dem Slash. Die URLs werden in einem PHP-Skript generiert, also habe ich urlencode() verwendet, sodass am Schluss etwas wie <a href="item/Foo%2FBar"> rauskommt. Seltsamerweise funktioniert der Regex in genau diesem Fall nicht! In diesem Fall bekomme ich die Standard-404-Meldung des Apache-Servers angezeigt. Es sind auch keine weiteren Ausdrücke in der Datei. Erst wenn ich in PHP das urlencode() rausnehme, also Links à la <a href="item/Foo/Bar"> generiere, funktioniert der Ausdruck wieder und die gewünschte Webseite wird angezeigt. Woran kann das liegen?
Ich habe einen sehr simplen Regex:
RewriteRule ^item/(.+)$ index.php?action=listitems&which=$1 [L]
Das funktioniert auch ganz gut für URLs à la "item/Foo" oder auch "item/Foo & Bar". Problematisch wird es mit dem Slash. Die URLs werden in einem PHP-Skript generiert, also habe ich urlencode() verwendet, sodass am Schluss etwas wie <a href="item/Foo%2FBar"> rauskommt. Seltsamerweise funktioniert der Regex in genau diesem Fall nicht! In diesem Fall bekomme ich die Standard-404-Meldung des Apache-Servers angezeigt. Es sind auch keine weiteren Ausdrücke in der Datei. Erst wenn ich in PHP das urlencode() rausnehme, also Links à la <a href="item/Foo/Bar"> generiere, funktioniert der Ausdruck wieder und die gewünschte Webseite wird angezeigt. Woran kann das liegen?