mit mod rewrite Verzeichnisse wegfiltern
MaxSmily
- webserver
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
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
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
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