mod_rewrite - kein css/img

soyo

Erfahrenes Mitglied
Hallo,

Ich habe einige einfache mod_rewrite regeln festgelegt. Zum testen liegt die Seite in einem Unterordner : http://www.test.de/tm

So soll erst einmal ungeleitet werden:
http://www.test.de/tm/news > http://www.test.de/tm/index.php?content=news
http://www.test.de/tm/news/search > http://www.test.de/tm/index.php?content=news&sub=search

Dazu hier meine .htaccess:
Code:
Options -MultiViews
RewriteEngine On
RewriteBase /tm/
RewriteRule ^([A-Za-z0-9_]+)$ /tm/index.php?content=$1 [L]
RewriteRule ^([A-Za-z0-9_]+)/([A-Za-z0-9_]+)$ /tm/index.php?content=$1&sub=$2 [L]

Es funktioniert alles soweit, jedoch haut er mir bei der 2. Regel die CSS raus. Das hat einen einfachen Grund, er sucht die css dann nicht in http://www.test.de/tm/css/ sonder in http://www.test.de/tm/news/search/css. Da liegt sie natürlich nicht.

Wie kann ich da Abhilfe schaffen?

Gruß soyo
 
Du kannst bspw. über eine RewriteCond-Direktive vor den RewriteRules ausschliessen, dass die Rules auf CSS- und Grafikdateien angewendet wird:
Code:
Options -MultiViews
RewriteEngine On
RewriteBase /tm/
RewriteCond %{SCRIPT_FILENAME}   !\.(gif|jpe?g|png|css)$ [NC]
RewriteRule ^([A-Za-z0-9_]+)$ /tm/index.php?content=$1 [L]
RewriteRule ^([A-Za-z0-9_]+)/([A-Za-z0-9_]+)$ /tm/index.php?content=$1&sub=$2 [L]
(ungetestet :))
 
Wird „css/foobar“ in „/tm/news/search/“ referenziert, wird dies zu „/tm/news/search/css/foobar“ aufgelöst, da relative Pfade immer von der Basis-URL (in diesem Fall die URL der aktuellen Ressource) aufgelöst.
Dies kann entweder mit absoluten Pfadangaben umgangen werden (also „/css/foobar“) oder aber du setzt mithilfe de base-HTML-Elements eine andere Basis-URL außer der der Ressource selbst (beispielsweise einfach „/“).
 
Absolute Pfadangabe wäre eine Lösung, die ich schon ausprobiert habe und diese auch funktionieren würde. Wie gesagt befindet sich die Seite noch im Aufbau und liegt von daher noch nicht auf dem richtigen Server.
Das base-Element hat irgendwie keine Wirkung, egal welchen Pfad ich dort eintrage. Kann ich nicht einfach alle Dateien die mit .css enden auf den entsprechenden Ordner umleiten?
 
Kannst du schon. Nur dann kannst du fast genau so gut die Stylesheets direkt ins HTML-Dokument schreiben, weil beispielsweise das Caching nur noch teilweise funktioniert, da ja fast immer eine unterschiedliche Ressource referenziert wird.
 
Zurück