nach nach mod-rewrite sind bilder und styles (fast) weg
frankx
- webserver
Hellihello,
mit mod_rewrite hatte ich bisher nur var_dumps ausgegeben. Nun binde ich eine reale Seite ein, die kommt auch, aber die Bilder werden nicht angzeigt, und von den Stylesheetangaben bleiben nur drei am Ende des Dokuments (linksseitige Rahmen) übrig. Wenn ich den Quelltext aber als normale Datei abspeicher, die .htacess lösche und die Datei direkt aufrufe, alles wieder prima. Mir fehlt grad der Ansatz. RewriteBase / ist gesetz. Weglassen hilft auch nichts. Issich lokaler Verweis: RewriteRule .* index_rewrite.php.
Dank und Gruß,
frankx
hi,
mit mod_rewrite hatte ich bisher nur var_dumps ausgegeben. Nun binde ich eine reale Seite ein, die kommt auch, aber die Bilder werden nicht angzeigt, und von den Stylesheetangaben bleiben nur drei am Ende des Dokuments (linksseitige Rahmen) übrig. Wenn ich den Quelltext aber als normale Datei abspeicher, die .htacess lösche und die Datei direkt aufrufe, alles wieder prima. Mir fehlt grad der Ansatz. RewriteBase / ist gesetz. Weglassen hilft auch nichts. Issich lokaler Verweis: RewriteRule .* index_rewrite.php.
Wie so viele schon vor dir mit diesem "Problem" hast auch du höchstvermutlich nicht berücksichtigt, dass die relativ angegebenen Pfade externer Ressourcen der Client vervollständigt.
gruß,
wahsaga
Hellihello wahsaga,
Danke für die Antwort.
Wie so viele schon vor dir mit diesem "Problem" hast auch du höchstvermutlich nicht berücksichtigt, dass die relativ angegebenen Pfade externer Ressourcen der Client vervollständigt.
Öhm, im Quelltext find ich das nicht, oder? Also auf example.com findet sich direkt im obersten Verzeichnis sowohl die .htacess wie auch die rewrite_index.php wie auch alle Resourcen "css.css" und "bild.png" in keinem Unterordner. Muss ich alle Pfade absolut angeben?
Dank und Gruß,
frankx
Hellihello,
"RewriteRule .* index_rewrite.php." - heißt doch, dass alle Anfragen mit der index_rewrite.php beantwortet werden, oder? Denn denn die Absolute Pfadangabe im Browser http://example.com/bild.png gab mir auch diese Ausgabe. Müssten dann also Dateiendungen wie png, jpg etc ausgenommen, werden. Hui, das wäre aber eine Fummelei.
Gruß,
frankx
hi,
"RewriteRule .* index_rewrite.php." - heißt doch, dass alle Anfragen mit der index_rewrite.php beantwortet werden, oder? Denn denn die Absolute Pfadangabe im Browser http://example.com/bild.png gab mir auch diese Ausgabe. Müssten dann also Dateiendungen wie png, jpg etc ausgenommen, werden.
Entweder das - oder die Definition umzuschreibender Requests enger eingeschränkt werden.
gruß,
wahsaga
Hellihello wahsaga,
Dank für Deine Antwort. Komischerweise funktioniert
RewriteRule (.*) index_rewrite.php
RewriteRule ^(.*).css$ $1.css
aber nicht für css.css. Nehm ich das allgemeinere Statement darüber aber raus, gehts. Gibts da eine Rangfolge?
Gruß,
frankx
hi,
Komischerweise funktioniert
RewriteRule (.*) index_rewrite.php
RewriteRule ^(.*).css$ $1.cssaber nicht für css.css. Nehm ich das allgemeinere Statement darüber aber raus, gehts.
Na was passiert denn wohl mit der Anfrage nach css.css, wenn sie auf die erste RewriteRule trifft?
gruß,
wahsaga
Hellihello wahsaga,
Na was passiert denn wohl mit der Anfrage nach css.css, wenn sie auf die erste RewriteRule trifft?
Ja, das kapier ich halt nicht. Hört der Apache dann auf, weiterzulesen. Wenn ichs umdrehe (erst css, dann komplett wildcard) gehts auch nicht. Auch weiß ich nicht, wie ich einen regulären Ausdruck bauen kann der css|jpg|gif ausschließt.
Im Grund soll es doch heißen,
schick *.jpg nach *.jpg
schick *.css nach *.css
etc.
den rest nach rewrite_index.php
Ich find auch kein Beispiel dafür, was mich wundert, weil ich dachte (ich weiß, das sollt ich vielleicht lieber lassen), dass das ein gängiges Konzept sein könnte.
Dank und Gruß,
frankx
hi,
Ja, das kapier ich halt nicht. Hört der Apache dann auf, weiterzulesen.
Nö, warum sollte er?
Wenn ichs umdrehe (erst css, dann komplett wildcard) gehts auch nicht.
Na weil dein "komplett Wildcard" dann immer noch _alles_ erwischt.
gruß,
wahsaga
Hellihello wahsaga,
Dank für Deine Mühe.
Jetzt habe ich:
RewriteRule ^(.*).css$ $1.css
RewriteRule ^(.*).PNG$ $1.PNG
RewriteRule ^(.*).gif$ $1.gif
RewriteRule !(.*)(.css|.PNG|.gif)$ index_rewrite.php
Das scheint zu gehen. Das letzte Rule sollte jetzt heißen:
"alle die nicht auf .css oder .PNG oder .gif enden." Oder ist da was quergedacht/-gemacht?
Dank und Gruß,
frankx
hi,
Jetzt habe ich:
RewriteRule ^(.*).css$ $1.css
RewriteRule ^(.*).PNG$ $1.PNG
RewriteRule ^(.*).gif$ $1.gifRewriteRule !(.*)(.css|.PNG|.gif)$ index_rewrite.php
Das scheint zu gehen.
Wozu sollen die ersten drei Rules gut sein - um diese angeforderten Ressourcen auf das umzuschreiben, was sie sowieso schon sind?
Und das (.*) aus der letzten Rule sollte entfallen können.
Die Punkte, die als Punkt gemeint sind, sollten allerdings maskiert werden.
gruß,
wahsaga
Hellihello wahsaga,
klingt logisch, ist ja auch schon spät.
RewriteRule !(\.css|\.PNG|\.gif)$ index_rewrite.php
wäre das dann und sollte reichen, ja.
Dank und Gruß,
frankx
Hellihello,
besser wohl, die Quellen alle ins Verzeichnis "quellen" zu tun, und dann mit
RewriteBase /rewrite_tests
RewriteRule quellen/(.*)$ quellen/$1
RewriteRule !^quellen index_rewrite.php
soll heißen, alles was auf Verzeichnis Quellen (quellen/) verweist, wird dahingeleitet, alles was keinen string "quellen" drin hat, wird an die index_rewrite.php geleitet. Und die weiß dann schon, was zu tun ist. Sonst hätte mensch ja ständig drauf zu achten, oder zu ergänzen, für jede Dateiendung.
Oder gibts da schlauere Projektverwaltungsszenarien und vielleicht einen Link dazu?
Dank und Gruß,
frankx