Mod_rewrite Problem

Hi,

heute habe ich mich mal mit mod_rewrite versucht, allerdings bin ich nach Stunden noch immer nicht zu einem zufriedenstellenden Ergebnis gekommen.

Die URL
meinedomain.de/?section=Konkakt&site=Anfahrt
soll in
meindomain.de/Konkakt/Anfahrt

umgewandelt werden, gleichzeitig gibt es aber auch URL mit 1 Parameter, also
meinedomain.de/?section=[color=#0040BF]Konkakt

Da ich keine Möglichkeit gefunden habe &site=$2 nur optional zu benötigen sieht meine bisherige Lösung so aus:

Options +FollowSymLinks RewriteEngine on RewriteBase /muh/neu(testweise zweck unterverzeichnis) RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?section=$1&site=$2 [L] RewriteRule ^([a-zA-Z0-9]+)$ index.php?section=$1

Problem bei dieser Lösung: Wenn ich beide Parameter angebe, werden die Relativen Pfade von css und Bildern nichtmehr richtig aufgelöst.

Welche Lösungsmöglichkeiten gibt es? Hab was von <base href=" gefunden, bin aber nichtmehr dazu gekommen es auszuprobiern, da ich die Datein nicht mehr da habe. ausserdem gefällt mir diese Lösung nicht so recht, auch wenn sie funktionieren sollte. Bei anexia.at z.B geht es auch ohne base, und ich vermute dort wird trotzdem mod_rewrite eingesetzt

mfg

Warum, ist hoffentlich klar.

Am einfachsten ist es m.E., wenn man alle Pfadangaben externer Ressourcen auf die Domainwurzel bezogen setzt.

Ggf. noch scriptseitig um ein Pfad-Präfix ergänzt, wenn man sich die Möglichkeit, das ganze mal in ein andere HTTP-Verzeichnisebene zu verschieben, offen halten will.

Warum, ist hoffentlich klar.[/quote]

Ehrlich gesagt noch nicht ganz, hab mich damit nicht befasst. könntest dus mal kurz erklären.

Mein Wissensstand ist so, dass es ja eigentlich immer nur die URL umschreibt, aber so ja eigentlich das Script noch das gleiche hat.

So wies jetzt aussieht gehen relative Pfade aber über die umgeschriebene URL. Was ich dann aber nicht verstehe, dann müsste doch eigentlich schon beim ersten umschreiben die style datei in einem Unterverzeichnis liegen, was aber ja nicht der fall ist.

Das ist relativ einfach…

RewriteCond %{REQUEST_URI} != ^(static|images)/
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9]+)?$ index.php?section=$1&site=$2

Wie immer ungetestet, es geht auch nur ums Prinzip. Das RewriteCond wäre sogar unnötig, sofern du alle statischen Inhalte mit Dateiendung verlinkst.

Sie „gehen über” (sofern wir das mal mit ihrer Umsetzung in einen absoluten Pfad übersetzen) die Adresse, unter der der Client das referenzierende Dokument angefordert hat.

Welches meinst du jetzt genau mit dem „ersten” Umschreiben?

Mach dir klar, welche Adresse der Client dabei anfordert.

Bin jetzt gerade dabei das ganze nochmal zu probieren…

mit dem “ersten” umschreiben, meine ich Wenn nur aufgerufen wird:

meindomain.de/Konkakt/

statt meindomain.de/Konkakt/Anfahrt

Die style.css ist unter meindomain.de/style.css gespeichert.

relativ wäre doch dann der Pfad beim 1. Dann meindomain.de/Konkakt/stlye.css und beim 2. meindomain.de/Konkakt/Anfahrt/style.css

Oder was verstehe ich da falsch daran?

[quote=“kla_kal”]mit dem “ersten” umschreiben, meine ich Wenn nur aufgerufen wird:

meindomain.de/Konkakt/

statt meindomain.de/Konkakt/Anfahrt

Die style.css ist unter meindomain.de/style.css gespeichert.[/quote]
Und ist im HTML-Dokument wie genau referenziert?

Nein, das wäre der relative Pfad in eine absolute Adresse umgesetzt.

Ich empfehle mal Referenzieren in HTML bei SELFHTML zu lesen, danach sollte einiges klarer sein.

Am einfachsten ist es mit <base href…

Alles andere würde wesentlich mehr aufwand, wie z.B die von dir vorgeschlagene Lösung mit einem Prefix.