mod-rewrite Problem

  • Hallo zusammen.

    Nach langem Suchen und probieren, geb ichs nun auf und bitte hier um Hilfe.
    Folgende RewriteRule:

    Apache Configuration
    RewriteEngine On
    RewriteBase /~user/ordnerx/
    RewriteRule ([\w-]+)\/([\w-]+)\.html$ index.php?page=$2&path=$1

    funktioniert soweit gut, ich bekomme die Seite geladen, die ich will.
    Nun gibt es aber folgendes Problem:
    Man sieht ja, dass eine url folgendermaßen aufgerufen wird:

    Code
    http://localhost/~user/ordnerx/unterordner/datei.html


    wobei intern sowas

    Code
    http://localhost/~user/ordnerx/index.php?page=datei&path=unterordner


    aufgerufen wird.
    Links sehen wie folgt aus:

    Code
    [url='unterordner/datei.html']Link[/url]


    Nach ein paar Klicks durch die Page hat man dann eine url dieser Form im Browser stehen:

    Code
    http://localhost/~user/ordnerx/unterordner/unterordner/unterordner/unterordner/datei.html


    Es werden also Links relativ zur aktuellen Url aufgerufen.
    Ich wollte quasi erreichen, dass ich meine Links halt in so einer einfachen Form aufrufen kann, vor allem in Hinsicht auf Verlinkung. Das alles soll halt in einer einzigen RewriteRule definiert werden (davor hatte ich für jede einzelne Seite eine eigene Regel).
    Hat jemand eine Idee, wie ich Apache mitteilen kann, jeden Link vom Rootordner /~user/ordnerx/ aufzurufen?

    Ich gebs nähmlich allmählich auf.
    Es hofft auf Hilfe,
    Jojo


  • Ja, das führt zu einem Aufruf ala

    Code
    http://localhost/unterordner/datei.html


    was natürlich nicht gehen kann. Irgendwie gehts komischerweise auch mit einer Anpassung der .htaccess nicht, was mich wundert.
    Möglich, dass deine Variante aber dann aufm Server funktioniert, ich kann das aber leider in nächster Zeit nicht testen.
    Aber theoretisch sollte es ja einen Code geben, der sowohl lokal als auch online funktioniert.
    Noch jemadn eine Idee?


  • Danke, DarkSyranus. Das funktioniert.
    Ich habe nur eine Befürchtung, da ich nicht weiss, wie das base-tag funktioniert (kannte ich noch gar nicht).
    Damit es geht, muss ich das so machen:

    Code
    <base href="http://localhost/~user/ordnerx/" />


    Führt das nicht zu einem neuen Apache-Aufruf ?
    Wäre dann ein Problem, wenn auch ein lösbares.
    Informier mich da doch mal bitte.


  • Der base href ist halt die Basis-Linkadresse. Alle Links auf der Seiten fangen dann damit an. Als wenn du in deine Links halt immer die komplette URL reinschreiben würdest.

    Wer andern eine Bratwurst brät, wird selbst zum Bratwurstbratgerät.
    Ron Stoppable