MaxSmily: mit mod rewrite Verzeichnisse wegfiltern

Hallo Forum,

ich beschäftige mich gerade mit mod rewrite und bin nun wohl auf ein Anfängerproblem gestoßen

Mein erster Teilerfolg ist bereits realisiert

Der Link
www.domain.de/verzeichnis/unterverzeichnis/artikelname-123.html

wird so umgewandelt
index.php?a=123

das funktioniert auch.

Das Problem: Nach erfolgreicher Weiterleitung finden die relativen Pfade des Dokuments nicht mehr zur CSS-Datei oder zu den IMG-Dateien. Mein Dokument denkt jetzt tatsächlich es wäre im Unterverzeichnis www.domain.de/verzeichnis/unterverzeichnis/

Wie erkläre ich ihm, dass dem nicht so ist?

Meine .htaccess sieht so aus

RewriteEngine On
RewriteBase /
RewriteRule -([0-9]*).html$ index.php?a=$1&%{QUERY_STRING}

Viele Grüße
Max Smily

--
Silvesterfeuerwerk Onlineshop - selbst programmiert mit Hilfe der SelfHTML-Gemeinschaft
  1. Hi,

    www.domain.de/verzeichnis/unterverzeichnis/artikelname-123.html

    benutze bitte den Domainnamen domain.de ausschließlich dann, wenn Du auch *exakt* diesen meinst.

    Das Problem: Nach erfolgreicher Weiterleitung finden die relativen Pfade des Dokuments nicht mehr zur CSS-Datei oder zu den IMG-Dateien. Mein Dokument denkt jetzt tatsächlich es wäre im Unterverzeichnis www.domain.de/verzeichnis/unterverzeichnis/

    Natürlich tut "es" das, schließlich entspricht es der Realität. Unter(halb) dieser URL hat der Client das Dokument vom Server angefordert.

    Wie erkläre ich ihm, dass dem nicht so ist?

    Der Client muss das Dokument von einer anderen URL anfordern. Beispielsweise von http://example.org/index.php?a=123.

    RewriteRule -([0-9]*).html$ index.php?a=$1&%{QUERY_STRING}

    Warum verwendest Du nicht [QSA]?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo Smily,

    www.domain.de/verzeichnis/unterverzeichnis/artikelname-123.html
    wird so umgewandelt
    index.php?a=123

    Das Problem: Nach erfolgreicher Weiterleitung finden die relativen Pfade des Dokuments nicht mehr zur CSS-Datei oder zu den IMG-Dateien. Mein Dokument denkt jetzt tatsächlich es wäre im Unterverzeichnis www.domain.de/verzeichnis/unterverzeichnis/

    Das Dokument denkt gar nichts. Der Webserver übrigens auch nicht.
    Der Browser denkt, dass das Dokument dort liegt, wo er es angefordert hat.

    Um ihm eine andere Ausgangsposition für relative Pfadangaben
    (z.B. zu CSS-Dateien oder Bildern) zu geben, kannst Du im
    HEAD-Bereich der HTML ein http://de.selfhtml.org/html/kopfdaten/basis.htm@title=BASE-Element einfügen, z.B. so:
    <base href="http://www.example.com/">
    oder eben die "richtige" URL (ohne die Parameter), z.B.
    <base href="http://www.example.com/index.php">

    Alternativ könntest Du sämtliche Pfadangaben http://de.selfhtml.org/html/allgemein/referenzieren.htm#absolut@title="absolut"
    (ab dem Document Root) machen, also mit "/" beginnend.
    Beispiel: wenn das Bild hier liegt:
    http://www.example.com/bilder/ordner1/bild1.jpg
    könntest Du es so einbinden:
    <img src="/bilder/ordner1/bild1.jpg" alt="...">
    Dann spielt es keine Rolle, unter welcher URL die
    HTML-Seite aufgerufen wird.

    HTH, mfg
    Thomas

    1. Hallo Thomas,

      vielen Dank für den Tipp mit dem BASE-Element. Das hat mir weitergeholfen.

      An den Gedanken, dass Dokumente nicht denken können, muss ich mich allerdings erst noch gewöhnen...

      @Cheatah: Ich entschuldige mich auch ausdrücklich dafür, die Domain www.domain.de so schändlich vergewaltigt und missbraucht zu haben. Ich hatte ja keine Ahnung! Völlig unverdient konnte ich auch hier was Gutes gewinnen, nehm ich doch ein [QSA] mit nach hause... Dein Weiterleitungstipp an eine absolute URL hat auch funktioniert, nur dass dadurch der gewünschte "sprechende-URL"-Effekt wieder weg war (ich weiß, den hab ich nie zuvor erwähnt...[Asche auf mein Haupt]).

      Froh und gleichzeitig geknickt, grüßt
      Max