Jannes: mod_rewrite, Rule /(.*) für _alles_ nicht richtig ?

Hallo zusammen,

ich komme nicht so recht klar. Eigentlich sollte das, was ich mir hier aus dem Forumsarchiv zusammengeklaubt habe doch funktionieren, aber es tut's nicht:

htacces-datei im WebRoot
---
<IfModule mod_rewrite.c>

RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_USER_AGENT} !^NameMeinesGanzSpeziellenUserAgents.*
    RewriteRule /(.*)              /umbau.php?url=$1 [L]

</IfModule>
---

Damit möchte ich alle Besucher, die nicht diesen speziellen UserAgent haben auf die umbau.php umleiten. (Ich hingegen möchte mit dem speziellen UserAgent die Seite ohne Umleitung testen können)

Wenn ich die Seite aufrufe mit    www.domain.tld
oder mit                          www.domain.tld/
oder mit                          www.domain.tld/index.php

oder irgendeine andere Datei _aus_dem_Webroot_

dann wird mir immer die index.php (oder die entsprechende Datei) angezeigt, aber nicht die umbau.php

Wenn ich eine Seite aufrufe wie   www.domain.tld/gibt_es/name.php
oder                              www.domain.tld/gibt_es_nicht/name.html

wird mir, wie gewünscht, die umbau.php angezeigt.

Wieso?

Gruß, Jannes

  1. echo $begrüßung;

    Wieso?

    Befrage dazu bitte zunächst das RewriteLog. Das zeigt dir sehr detailliert an, was mod_rewrite mit deiner Anfrage anstellt. Dazu benötigst du allerdings die Möglichkeit, deinen Apachen zu konfigurieren, denn in der Per-Verzeichnis-Konfigurationsdatei (.htaccess) kann man das RewriteLog nicht einstellen.

    echo "$verabschiedung $name";

  2. Hi,

    RewriteBase /

    IIRC wird alles von der URL einschl. der RewriteBase nicht mehr an die RewriteRule weitergegeben.

    oder mit                          www.domain.tld/

    Hier kommt also m.W. bei der Rewrite-Rule ein Leerstring "" an,

    oder mit                          www.domain.tld/index.php

    und hier "index.php".

    RewriteRule /(.*)              /umbau.php?url=$1 [L]

    Deine RewriteRule trifft zu, falls ein / vorkommt und irgendwas danach.

    dann wird mir immer die index.php (oder die entsprechende Datei) angezeigt, aber nicht die umbau.php

    Bei http://www.domain.tld/ liegt das am DirectoryIndex.

    Wenn ich eine Seite aufrufe wie   www.domain.tld/gibt_es/name.php
    oder                              www.domain.tld/gibt_es_nicht/name.html
    wird mir, wie gewünscht, die umbau.php angezeigt.

    Wirklich wie gewünscht? Wie sieht der übergebene Parameter url aus?
    Ich würde vermuten, da fehlt jeweils das "gibt_es" bzw. "gibt_es_nicht".

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.