Seite 1 von 1

Styles, Bilder und JavaScript funktionieren nicht

Verfasst: 15.07.2009 13:34
von rknadmin
Ich arbeite mit einem CMS, dass die Seiten natürlich dynamische erzeugt, nach dem Schema: domain.de/projektname/index.php?id=123.

Nun soll die URL wie folgt aufgebaut/dargestellt werden werden:

domain.de/bereich1/unterbereich1.1/id/idwert/
domain.de/bereich1/unterbereich1.2/id/idwert/
domain.de/bereich1/unterbereich1.3/unterbereich1.3.1/id/idwert/
domain.de/bereich2/unterbereich2.1/id/idwert/
domain.de/bereich2/unterbereich2.2/unterbereich2.2.1/id/idwert/
domain.de/bereich2/unterbereich2.2/unterbereich2.2.2/id/idwert/
domain.de/bereich2/unterbereich2.3/id/idwert/
domain.de/bereich2/unterbereich2.4/id/idwert/
usw....

Um zu wissen, welche Seite nun angezeigt werden soll, reicht mir als Info der idwert. Das hat mich zu folgender Regelgeführt:

RewriteRule ^.+/StoryID/(.*)$ /projektname/index.php?StoryID=$1

Die Regel funktioniert soweit auch. Das Problem ist aber, dass Bilder nicht mehr angezeigt und Styles und Scripts von ausgelagerten Datei nicht mehr ausgewertet werden.

Ist mein Ansatz völlig falsch oder fehlt nur eine Kleinigkeit.

Verfasst: 15.07.2009 17:27
von Gumbo
Referenziere die externen Ressourcen durch absolute URL-Pfade oder gleich absolute URLs.

Verfasst: 16.07.2009 07:23
von rknadmin
Gibt es keine Möglichkeit das über rewriterules zu lösen? Wegen meiner auch mit einem völlig neuen Ansatz. Ich müsste sonst massiv ins CMS eingreifen.

Verfasst: 16.07.2009 11:02
von Gumbo
Eine zweite Möglichkeit wäre noch die Basis-URL zu ändern (siehe BASE-Element). Das hat aber auch ein paar Nebeneffekte, da dies dann eben alle relativen URLs betrifft.

Dieses Problem mit mod_rewrite zu lösen, ist zwar theoretisch auch möglich, aber absolut nicht zu empfehlen. Denn durch, dass relative Referenzen verwendet werden, werden diese Referenzen je nach Basis-URL unterschiedlich aufgelöst. Das heißt ein „css/style.css“ kann einmal zu „/foo/css/style.css“ und einmal zu „/foo/bar/baz/css/style.css“ aufgelöst werden. Das kann zwar beides intern zu „/css/style.css“ umgeschrieben werden kann, doch die beiden URLs bleiben dadurch weiterhin gültig, was das Caching ineffizient macht, da jede URL so ihr eigenes Stylesheet referenzieren würde. Und auch wenn eine externe Weiterleitung verwendet würde, würde das zwei statt nur einer Anfrage bedeuten.

Verfasst: 16.07.2009 11:34
von rknadmin
OK und danke für die schnelle Antwort. Dann werde ich statt "/" einfach "_" als Trennzeichen verwenden. Sieht zwar nicht so schön aus, aber damit muss unser GF dann leben, wenn er halt den ganzen Pfad da oben drinstehen haben will.

Was tut man nicht alles für Google

Verfasst: 16.07.2009 11:45
von Gumbo
Verwende doch einfach absolute URL-Pfade.