4.30hStefan: RewriteEngine on dupliziert Verweise

Hallo,

ich habe die .htaccess
mit RewriteEngine on
geschmückt um die PHP Seite ein wenig suchmaschinenfreundlicher zu gestalten.
sprich:

RewriteCond %{REQUEST_URI} start/(.*)$

und

RewriteRule start/(.*)$ /start.php?vari=$1

nun läuft das zwar, allerdings nur beim ersten aufruf,
danach sind sämtlich Verweise dupliziert, z.b. aus

http://www.meineseite.de/start/willkommen wird zu http://www.meineseite.de/start/start/willkommen.
drücke ich nocheinmal drauf wird es zu:
http://www.meineseite.de/start/start/start/willkommen.

Ich vermute , das liegt am Refresh der Site, (ich übergebe die Parameter and die selbe Seite)
Kann sich jemand darauf ein Reim machen?
Liegt das am Refreshing?
Kann man das irgendwie umgehen?
Habe ich irgendetwas anders übersehen?

Wäre sehr dankbar für Anregungen, komme hier nämlich keinen Millimeter weiter....

mfg
4.30hStefan

  1. Hi,

    RewriteCond %{REQUEST_URI} start/(.*)$

    und

    RewriteRule start/(.*)$ /start.php?vari=$1

    als mod_rewrite-Laie würde ich mal sagen, daß da was fehlt.
    Versuch doch mal folgendes:

    RewriteCond %{REQUEST_URI} ^/start/(.*)$
    RewriteRule ^/start/(.*)$ /start.php?vari=$1

    Schönen Gruß

    Rainer

  2. hi!

    RewriteCond %{REQUEST_URI} start/(.*)$
    RewriteRule start/(.*)$ /start.php?vari=$1
    nun läuft das zwar, allerdings nur beim ersten aufruf, danach sind
    sämtlich Verweise dupliziert,

    Das liegt nicht an mod_rewrite, sondern an deinem Browser. Vermutlich
    gibst du immer nur relative URLs an, und keine absoluten. Zum Bei-
    spiel ruft jemand die folgende Seite auf:

    /start/

    Also die Startseite. Darauf ist ein Link auf "test/". Der Browser
    weiß, dass er auf der Seite "/start/" ist und hängt den relativen
    Link dahinter, weil er beim Server sowieso nur absolute URLs abfragen
    kann. Dann ruft er also folgende Seite auf, wenn du den Link
    anklickst:

    /start/test/

    Wegen des abschließenden Slashs denkt der Browser wieder, dass du
    dich in einer neuen Verzeichnisebene befindest. Wenn da jetzt ein
    Link zb. auf "info/" ist, dann hängt er den Link hinten an, um wieder
    eine absolute URL zu bilden:

    /start/test/info/

    Und so weiter...

    Das Problem ist hoffentlich klar geworden: du kannst mit dieser
    mod_rewrite-Methode in den meisten Fällen keine relativen URLs
    verwenden, da du zwar immer vom Root-Verzeichnis aus verlinkst, der
    Browser sich aus seiner Sicht aber nicht in diesem Verzeichnis
    befindet.

    Ich hatte vor einiger Zeit das gleiche Problem und als Lösung dafür
    einfach alles absolut verlinkt.

    bye, Frank!