mod_rewrite unter WAMP
Takahe
- webserver
Hallo,
ich würde auf meinem lokalen WAMP-Server gerne das Apache-Modul mod_rewrite einsetzen, bringe es aber partout nicht zum laufen...
Unter Linux tut es wunderbar, aber irgendeine Einstellung habe ich auf meiner Windows-Kiste wohl übersehen.
Wenn ich die auf dem Linux-Server funktionierende .htaccess unter WAMP einsetze, quittiert Apache dies mit "Bad Request - Your browser sent a request that this server could not understand."
Die folgenden Einstellungen habe ich bereits gesetzt:
LoadModule rewrite_module modules/ApacheModuleRewrite.dll
<Directory />
Options FollowsymLinks
AllowOverride All
</Directory>
Es wäre super, wenn mir jemand 'nen Tip geben kann, wo mein Problem liegen könne. Vielleicht bin ich auch schon total betriebsblind, oder einfach nur blöd...
Viele Grüße
Takahe
P.S.
die server-info zeigt mir auch an, daß mod_rewrite.c geladen ist.
Hallo Tahake,
Es wäre super, wenn mir jemand 'nen Tip geben kann, wo mein Problem liegen könne. Vielleicht bin ich auch schon total betriebsblind, oder einfach nur blöd...
Hast Du denn schon mal ins Error-Log geschaut? Wie sieht denn Deine .htaccess aus? Wie sieht Dein Rewrite-Log aus?
Grüße,
Christian
Hallo Christian,
Hast Du denn schon mal ins Error-Log geschaut? Wie sieht denn Deine .htaccess aus? Wie sieht Dein Rewrite-Log aus?
Hier der Inhalt meiner .htaccess:
RewriteEngine on
RewriteRule ^einrichtungen_(.*).html$ einrichtungen.php?art=$1
Das Error-Log ist leer, im Access-Log erscheint die nicht gerewritete Adresse mit einer 400er Meldung.
Im Rewrite-Log sieht es allerdings so aus, als ob die Ursprungsadresse in die gewünschte Form umgeschrieben würde. Ich muß zwar zugeben, daß ich aus diesem Logfile nicht ganz schlau werde, aber zumindest erkenne ich daran, daß die in die ursprüngliche URL eingeschlüsselten Variablen korrekt erkannt und die Parameter richtig gesetzt wurden.
Hier der Inhalt der rewrite.log, nach einem Versuch die Datei "http://localhost/bnet4/einrichtungen/einrichtungen_sehenswertes" aufzurufen, die als "http://localhost/[..]/einrichtungen/einrichtungen?art=sehenswertes" gerewritet werden sollte:
127.0.0.1 - - [11/Jan/2003:16:25:36 +0100] [localhost/sid#795a08][rid#88d810/initial] (3) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] strip per-dir prefix: c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen_sehenswertes.html -> einrichtungen_sehenswertes.html
127.0.0.1 - - [11/Jan/2003:16:25:36 +0100] [localhost/sid#795a08][rid#88d810/initial] (3) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] applying pattern '^einrichtungen_(.*).html$' to uri 'einrichtungen_sehenswertes.html'
127.0.0.1 - - [11/Jan/2003:16:25:36 +0100] [localhost/sid#795a08][rid#88d810/initial] (2) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] rewrite einrichtungen_sehenswertes.html -> einrichtungen.php?art=sehenswertes
127.0.0.1 - - [11/Jan/2003:16:25:36 +0100] [localhost/sid#795a08][rid#88d810/initial] (3) split uri=einrichtungen.php?art=sehenswertes -> uri=einrichtungen.php, args=art=sehenswertes
127.0.0.1 - - [11/Jan/2003:16:25:36 +0100] [localhost/sid#795a08][rid#88d810/initial] (3) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] add per-dir prefix: einrichtungen.php -> c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php
127.0.0.1 - - [11/Jan/2003:16:25:36 +0100] [localhost/sid#795a08][rid#88d810/initial] (3) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] add per-dir prefix: c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php -> c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php
Das ganze wird mit der Meldung "Bad Request - Your browser sent a request that this server could not understand." quittiert.
In der httpd.conf steht übrigens
<Directory "C:\Programme\Abria Merlin\Apache\htdocs">
Options Indexes FollowSymLinks MultiViews ExecCGI
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Der Eintrag "AllowOverride All" bedeutet doch, daß die .htaccess "Überschreibberechtigung" hat, oder?
Ich danke Dir jedenfalls schon mal sehr für Deine Hilfe, ich probier hier jetzt schon seit 3 Tagen rum, und komme nicht weiter...
Gruß
Takahe
Hallo Tahake,
RewriteEngine on
Hier direkt würde ich noch einen Eintrag zusätzlich einfügen:
RewriteBase /bnet4/einrichtungen
Das ganze wird mit der Meldung "Bad Request - Your browser sent a request that this server could not understand." quittiert.
Ich vermute, dass es das RewriteBase ist. Denn stelle Dir mal vor, folgendes passiert:
/bnet4/einrichtungen/einrichtungen_aaa.html
wird nach
einrichtungen.php?art=aaa
rewritet. Dann ist es so, als ob ein "GET einrichtungen.php?art=aaa HTTP/1.1" abgesetzt wurde und nicht ein "GET /bnet4/einrichtungen/einrichtungen.php?art=aaa HTTP/1.1".
Wenn's das nicht ist, dann weiß ich auch nicht weiter.
Der Eintrag "AllowOverride All" bedeutet doch, daß die .htaccess "Überschreibberechtigung" hat, oder?
Ja, und zwar auf alles.
Grüße,
Christian
Hallo Christian,
mit der RewriteBase hatte ich schon getestet, leider auch erfolglos. Ich denke (wie Michael schon geschrieben hat), daß dieser Eintrag im rewrite.log die Fehlermeldung verursacht:
127.0.0.1 - - [13/Jan/2003:15:53:11 +0100] [localhost/sid#7957d0][rid#891370/initial] (3) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] add per-dir prefix: einrichtungen.php -> c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php
127.0.0.1 - - [13/Jan/2003:15:53:11 +0100] [localhost/sid#7957d0][rid#891370/initial] (3) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] add per-dir prefix: c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php -> c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php
Erst wird die per-dir prefix gesetzt (m.E. korrekt), und dann wird sie gleich nochmals gesetzt - und da fällt der Browser natürlich auf die Nase. Stellt sich die Frage, was verursacht das nochmalige Setzen der Prefix???
Die Tatsache, daß die .htaccess online funktioniert, nur am lokalen Server nicht, kann ich mir gar nicht erklären.
Gruß
Takahe
Hallo Christian,
Problem gelöst, es hat sich hier tatsächlich um einen Bug im Apache gehandelt (ich hatte die Version 1.3.19 eingesetzt).
Ein Update auf 1.3.27 - und schon funktioniert es.
Der Bug tritt übrigens nur unter Win32-Systemen auf.
Gruß und nochmal Danke für Deine Hilfestellungen
Takahe
Ach ja, für alle die es interessiert, hier noch die Beschreibung des Bugs:
http://bugs.apache.org/index.cgi/full/5900
(Vielleicht haben ja mehrere Leute das gleiche Problem, ich habe mich 3 Tage blödgegoogled, bis ich endlich mal was passendes gefunden habe.)
Hi Takahe,
127.0.0.1 - - [11/Jan/2003:16:25:36 +0100] [localhost/sid#795a08][rid#88d810/initial] (3) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] add per-dir prefix: c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php -> c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php
also wenn ich mir nur die letzte Zeichenkette ansehe, wo mitten im Pfadnamen ein "/c:/" auftaucht, dann bekomme ich den Eindruck, daß Du irgendwo relative und absolute Pfadnamen verwechselst.
Jedenfalls ist das Ergebnis dieses rewrite-Vorgangs anscheinend ein illegaler Pfadname.
Viele Grüße
Michael
Hallo Michael,
Jedenfalls ist das Ergebnis dieses rewrite-Vorgangs anscheinend ein illegaler Pfadname.
Ja, sieht ganz danach aus. Ich verstehe allerdings nicht, an welcher Stelle da was schief läuft.
Der folgende (vorletze) Schritt beim Rewrite ist klar:
127.0.0.1 - - [13/Jan/2003:15:39:05 +0100] [localhost/sid#7957d0][rid#891370/initial] (3) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] add per-dir prefix: einrichtungen.php -> c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php
Aber wieso wird die per-dir prefix nochmal geschrieben (im letzen Schritt)???
127.0.0.1 - - [13/Jan/2003:15:39:05 +0100] [localhost/sid#7957d0][rid#891370/initial] (3) [per-dir c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/] add per-dir prefix: c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php -> c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/c:/programme/abria merlin/apache/htdocs/bnet4/einrichtungen/einrichtungen.php
Vielen Dank schon mal für den Hinweis, jetzt habe ich zumindest mal 'ne Spur
Gruß
Takahe
Hmm, die "zweite" per-dir prefix ist offenbar die Pfadangabe der .htaccess-Datei. Wieso wird die denn in der rewriteRule angehängt???
Hi Michael,
ich denke, ich habe die Ursache des Problems gefunden, leider aber nicht die Lösung:
http://bugs.apache.org/index.cgi/full/5900
...[1 Stunde später]
So, jetzt habe ich von Apache 1.3.19 auf 1.3.27 upgedatet - und schon tut es!
Immerhin mal ein Problem, an dem ich nicht direkt selbst schuld war ;-)
Danke und Gruß
Takahe