PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache2: mod_rewrite: Warum wird die Dateiendung automatisch hinzu gefügt?



[HO]Xerxes
03.08.04, 22:56
Ich habe gerade angefangen mich in mod_rewrite einzuarbeiten. Einfache Dinge wie die Umleitung von
http://server/123
auf
http://server/news.php?id=123
funktionieren auch. (Regel: RewriteRule ^([0-9]+)$ news.php?id=$1 [NC])

Wenn ich aber mit einer geänderten Regel (RewriteRule ^news/([0-9]+)$ news.php?id=$1 [NC])
http://server/news/123
auf
http://server/news.php?id=123
umleiten will, passiert gar nichts, bzw. es wird nur die news.php aufgerufen.
Ein Blick in die rewrite.log hat mir folgendes gezeigt:

192.168.0.1 - - [03/Aug/2004:22:19:46 +0200] [haloorbit/sid#812ca40][rid#81d84d0/initial] (3) [per-dir /web/haloorbit/html/] applying pattern '^news/([0-9]+)$' to uri 'news.php/123'
Warum wendet mod_rewrite das Suchmuster auf news.php/123 an, wenn ich doch news/123 eingegeben habe bzw. warum wird an das news die Dateiendung angehangen? Wenn ich das ganze mit "new" mache (eine Datei/ein Ordner namens new gibt es nicht), funktionierts.

Ein wenig rumgesucht hab ich schon, aber mir fallen nicht die richtigen Suchbegriffe ein. Im Apache-FAQ hab ich auch schon geguckt, hab da aber nichts gefunden.
Auf den ersten Blick sah es ja für mich wie so ein UseCannoicalNames-Problem aus, aber das isses nicht....jedenfalls steht die Option bei mir schon auf off.

[HO]Xerxes
05.08.04, 21:28
Ich hab mich heute wieder mit dem Problem auseinander gesetzt. Habe zwar noch keine Lösung gefunden, aber ein Workaround.

Ich habe die Dateiendung einfach mit in das Pattern getan. Der User kann sich News jetzt über news/123 eingeben und interen wird mit news.php/123 gearbeitet:

RewriteRule ^news.php/([0-9]+)$ news.php?id=$1 [NC]