Bernhard Wagner: mod_rewrite funktioniert nicht während es funktioniert O.o

Hallo,

ich bin schon den ganzen Tag auf der Suche nach dem Fehler meiner config Datei und kann ihn aber nicht finden. In den logs wird kein Fehler angezeigt, aber es läuft nicht so wie es soll. Andererseits hat es schonmal funktioniert unter einer subdomain von mir, weswegen ich das jetzt nicht verstehe.

Folgende URL Manipulation:

RewriteRule ^([-\w]+)/([-\w]+)\.html$ /index.php?o1=$1&s=$2  
RewriteRule ^([-\w]+)\.html$ /index.php?s=$1

Also die Namen der Dateien (und Ordner) die man anfordert, werden für den index als Variablen übergeben die ich in der index Datei weiter verarbeiten kann. Bedeutet schlicht: Egal was ich aufrufe hinter der Domain bis zum Grad eines Ordner mit den Buchstaben A-Za-z und dem Strich - werden gespeichert und anschließend ein redirect zur Index. Folglich müsste alles auf den Index verweisen, allerdings sagt der Server mit "Page not Found 404".
Ich weiß ja dass die Seite nicht existiert, deswegen wird sie mittels der rewriterule bearbeitet und dürfte daher kein 404 ausgeben.

Mod_rewrite ist aber auf jeden Fall bei mir installiert, denn diese Regel:

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]  
RewriteRule ^(.*)$ http://%1$1 [R=301,NC]

die das www entfernt funktioniert einwandfrei.

Folgende Werte sind definiert:

ServerSignature off
UseCanonicalName on
ServerTokens Prod
AddDefaultCharset UTF-8
DirectoryIndex index.php index.html
DocumentRoot (Pfad)

<Directory "(Pfad)">
Options +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
ErrorDocument 401 "http://example.com/unauthorized.php"
ErrorDocument 403 "http://example.com/forbidden.php"
ErrorDocument 404 "http://example.com/not-found.php"
ErrorDocument 503 "http://example.com/service-unavailable.php"
</Directory>

<IfModule mod_rewrite.c>
RewriteEngine On
#Das mit dem www
RewriteCond %{HTTP_HOST} ^www.(.*) [NC]
RewriteRule ^(.*)$ http://%1$1 [R=301,NC]

Hier Url Manipulation

RewriteCond %{REQUEST_URI} !-f
RewriteRule ^([-\w]+)/([-\w]+).html$ /index.php?ordner=$1&seite=$2
RewriteRule ^([-\w]+).html$ /index.php?seite=$1
</IfModule>

Woran könnte es liegen, dass es nicht funktioniert?
Vielen Dank im vorraus...

Grüße,
Bernhard

  1. Tach!

    ich bin schon den ganzen Tag auf der Suche nach dem Fehler meiner config Datei und kann ihn aber nicht finden. In den logs wird kein Fehler angezeigt, aber es läuft nicht so wie es soll.

    Und was ist damit?

    allerdings sagt der Server mit "Page not Found 404"

    Was konkret steht also im ErrorLog, was nicht da sein soll (besser: ist)?

    Ich weiß ja dass die Seite nicht existiert, deswegen wird sie mittels der rewriterule bearbeitet und dürfte daher kein 404 ausgeben.

    Misslingende Umschreibereien führen zu nicht vorhandenen Dateien, was der Server wie bei einem nicht umgeschriebenen unauffindbaren Dokument mit 404 beantwortet.

    Folgende Werte sind definiert:

    Lass doch bitte demnächst die für das Problem nicht relevanten Einstellungen weg.

    ErrorDocument 401 "http://example.com/unauthorized.php"
    [...]

    Bist du sicher, dass das so richtig ist? Eine vollständige URL führt dazu, dass der Server nicht den korrekten Fehlercode sondern einen 301er Redirect schickt. Der Browser fordert daraufhin das Fehlerdokument ab, was mit 200 ausgeleifert wird. Ein fehlercodeauswertender Automat (Suchmaschine) bekommt also die wahre Ursache nicht genannt.

    Woran könnte es liegen, dass es nicht funktioniert?

    Tja, das ist mit der gegebenen Beschreibung nicht nachvollziehbar. Vielleicht gibt es keine /index.php sondern nur eine index.php. Vielleicht ist auch was anderes die Ursache, auf die man mithilfe des RewriteLog kommt.

    Vielen Dank im vorraus...

    Ist "vor-raus" das halbe Gegenteil von "Vor-hinein"?

    dedlfix.

    1. Lass doch bitte demnächst die für das Problem nicht relevanten Einstellungen weg.

      Solange er nicht weiß, was das Problem ist, sendet er das zu wo er denkt es könnte zum Problem gehören. Das ist sicherlich auf die Nörgler zurückzuführen, die sonst immer alles haben wollen - auf anderer Seite sich aber beschweren wenn es zuviel ist. Leute die sich in diesem Forum melden kommen meist mit Fehlern und Problemen. Wären sie perfekt, wären sie nicht hier, oder? ;-)

      Ist "vor-raus" das halbe Gegenteil von "Vor-hinein"?

      Solche Sätze vergraulen anstatt zu helfen und sind unnötig...

      Woran könnte es liegen, dass es nicht funktioniert?

      Antwort: Vor die beiden "rewrite rules" noch ein / .
      Also RewriteRule ^/([-\w]+).html$ /index.php?s=$1

  2. hi,

    Schritt für Schritt vorgehen!

    .. allerdings sagt der Server mit "Page not Found 404".

    Zuerst mal klären, wer diese Meldung ausgibt, ist es Dein im 'ErrorDocument 404' angegebenes Script oder ist es der Webserver?

    Kurzum: Kommentiere die ErrorDocument-Zeilen zunächst mal aus und dann schauen wir weiter.

    Hotti