mod_rewrite: ich dreh noch durch!
RuD
- webserver
Seid gegrüßt!
ich versuche mit:
RewriteEngine on
Options FollowSymLinks
RewriteBase /__new_gemc/
RewriteRule ^([-0-9a-z]+)/$ index.php?page=$1
RewriteRule ^([-0-9a-z]+)$ index.php?page=$1
RewriteRule ^([-0-9a-z]+)/([-0-9a-z]+)$ index.php?page=$1&show=$2
RewriteRule ^([-0-9a-z]+)/([-0-9a-z]+)/$ index.php?page=$1&show=$2
dabei will ich www.domain.tld/test/test2
in www.domain.tld/index.php?cat=test&sub=test2 umwandeln.
und www.domain.tld/test/
soll in www.domain.tld/index.php?cat=test umgewandelt werden.
Zudem sollen "Schluss-Slashes" auch unterstützt werden.
Doch hier meine Probleme damit:
bei www.domain.tld werden CSS und Graphiken angezeigt
bei www.domain.tld/test auch
aber bei www.domain.tld/test/
www.domain.tld/test/test2
oder www.domain.tld/test/test2/ werden die CSS und die Graphiken nicht angezeigt.
CSS liegt direkt im "__new_gemc" und die Graphiken in "__new_gemc/img". Zur Info das "__new_gemc" ist im Moment (zum Testen) das root.
Was passiert durch die Rewrites mit der Bild/CSS-URI? Und wie muss ich die Regeln ändern/ergänzen, um das zu beheben?
hi,
wie hast du die CSS- und Bild-Ressourcen im HTML eingebunden? Relative Pfade, oder in Bezug auf /?
Was passiert durch die Rewrites mit der Bild/CSS-URI?
Wenn sie nicht von deinen RewriteRules betroffen sind, dann gar nichts.
Aber im Browser passiert etwas:
Der hat das Dokument von /test/test2 oder /test/test2/ angefordert.
Wenn du darin jetzt eine Ressource einfach relativ als "xyz.css" oder "abc.jpg" eingebunden hast - dann ergänzt der Browser diese natürlich, wie es von ihm erwartet wird, mit dem aktuellen Pafd, unter dem er das Dokument angefordert hat - also
/test/xyz.css
/test/abc.jpg
bei ersterem, Aufruf ohne abschließenden Slash, bzw.
/test/test2/xyz.css
/test/test2/abc.jpg
bei Aufruf mit abschließendem Slash.
gruß,
wahsaga
Seid gegrüßt!
hi,
wie hast du die CSS- und Bild-Ressourcen im HTML eingebunden? Relative Pfade, oder in Bezug auf /?
Via <img src="img/bild.jpg"> und <link rel="stylesheet" type="text/css" href="style.css">. Sollte man das umstellen auf www.domain.tld/style.css? Aber eigentlich will ich keine absoluten Pfade. Kann man das irgendwie auch über mod_rewrite regeln?
Wenn sie nicht von deinen RewriteRules betroffen sind, dann gar nichts.
Wie schließe ich das aus?
Aber im Browser passiert etwas:
Der hat das Dokument von /test/test2 oder /test/test2/ angefordert.
Alles klar also will er /test/test2/img/bild.jpg - findet er aber nicht - Is klar!
Bis Später
==========================================================
[Testversion meiner Seite]
hi,
Via <img src="img/bild.jpg"> und <link rel="stylesheet" type="text/css" href="style.css">. Sollte man das umstellen auf www.domain.tld/style.css? Aber eigentlich will ich keine absoluten Pfade.
Die sind nicht absolut, sondern relativ zur Domain.
Warum willst du die nicht?
Ich finde das am einfachsten - und es frisst auch nicht unnötig Performance, weil ständig reinkommende "falsche" Requests wieder "geradegebogen" werden müssen.
Kann man das irgendwie auch über mod_rewrite regeln?
Du kannst jegliche Anfrage umschreiben, wenn du ein geeignetes Muster für sie findest.
Für sinnvoll halte ich das in Bezug auf dieses Problem aber nicht.
gruß,
wahsaga