Takahe: mod_rewrite unter WAMP

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.

  1. 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

    --
    Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
    1. 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

      1. 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

        --
        Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
        1. 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

        2. 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

        3. 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.)

      2. 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

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
        1. 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

          1. Hmm, die "zweite" per-dir prefix ist offenbar die Pfadangabe der .htaccess-Datei. Wieso wird die denn in der rewriteRule angehängt???

        2. 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