mod rewrite - Pfade werden nicht mehr gefunden

Ich fange an, mich mit mod rewrite zu beschäftigen und komme nicht weiter.

Aufgabe:
Ich möchte ".../pfad-mit-stichworten/123-456.html" nach index.php?page=123&menuid=456 (Beispiel) umleiten.

Der Teil "pfad-mit-stichworten" kann bei der Übertragung einfach wegfallen.

Ohne Pfad klappt das schon prima:

RewriteEngine on
RewriteRule ^([0-9]+)-([0-9]+).html$ index.php?page=$1&menuid=$2

Wenn ich aber einen Pfad davor setze:

RewriteEngine on
RewriteRule ^[^/]*/([0-9]+)-([0-9]+).html$ index.php?page=$1&menuid=$2

Gehen offensichtlich die Pfade für Stylesheet und Grafiken verloren. Dabei soll die Umsetzung doch nur stattfinden, wenn eine Datei in der Form 123-456.html aufgerufen wird, nicht bei style.css oder grafik.jpg. Woran liegst?

Und wo ich gerade Fragen stelle: Kann ich eventuell vorhandene (weitere) Get-Variablen mit durchreichen? Vielen Dank für eure Hilfe.
 
Moin,

Bist du sicher, dass die Pfade der anderen Dateien umgeschrieben werden?

Du verwendest ja nicht die Redirect-Flag, also steht dort in der Adresszeile weiterhin der Original-Pfad. Von mehr hat der Browser auch keine Kenntnis, also sucht er die Dateien weiterhin ausgehend vom Verzeichnis pfad-mit-stichworten/....was dann bei relativen Pfadangaben für die anderen Dateien Probleme verursacht.

Was das andere betrifft, dafür kannst du auch die Flag QSA verwenden.
 
Moin,

Bist du sicher, dass die Pfade der anderen Dateien umgeschrieben werden?

Du verwendest ja nicht die Redirect-Flag, also steht dort in der Adresszeile weiterhin der Original-Pfad. Von mehr hat der Browser auch keine Kenntnis, also sucht er die Dateien weiterhin ausgehend vom Verzeichnis pfad-mit-stichworten/....was dann bei relativen Pfadangaben für die anderen Dateien Probleme verursacht.

Was bewirkt das Redirect-Flag?

In der Adresszeile des Browsers bleibt es so, wie ich es zum testen eingebe, also z.B.: ".../pfad-mit-stichworten/123-456.html". Da die Style-Sheets und Grafiken dann nicht angezeigt werden, gehe ich davon aus, dass diese im .../pfad-mit-stichworten/ gesucht werden, der ja nicht real existiert. Wenn ich die Variante ohne Pfad benutze, wird jedoch alles gefunden. Folglich gehe ich davon aus, dass alle Pfade umgeschrieben werden, was ja aber nicht sein soll. Oder verstehe ich die Funktionsweise nur nicht
 
Die Redirect-Flag bewirkt eine Umleitung.

Es wird also nicht nur die Adresse umgeschrieben, sondern zu der Adresse umgeleitet...die neue Adresse steht dann auch in der Adresszeile.

Für den Browser ist die angefragte in deinem Fall wie erwähnt immer noch die, die in der Adresszeile steht....vom Umschreiben der URL weiss er nichts, und relative Pfade eingebetteter (Client)-Dateien richten sich auch danach.

Daher...nimm statt relativer Pfade absolute Pfade, da ist egal, was du im geheimen so umschreiben lässt.
 

Neue Beiträge

Zurück