mod_rewrite, alle Verzeichnisse ausgeben
thomas
- webserver
Hallo
Meine RewriteRule sollte folgendes können, doch leider zickt sie noch;-)
Pfad: www.domain.ch/restaurant/impressionen oder www.domain.ch/restaurant oder www.domain.ch/restaurant/geschichte/1999
Nun möchte ich per rewrite die gesamten Verzeichnisse nach dem Domainnamen in eine Variable packen damit ich diese per PHP dann weiterverarbeiten kann.
Mein Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* kh/index.php?catslugs=$1 [QSA,L]
leitet mir zwar alles auf kh/index.php um, doch die variable ist leer.
Hat mir jemand einen Tip/Lösung?
Danke und Gruss
Thomas
Hi,
RewriteRule .* kh/index.php?catslugs=$1 [QSA,L]
leitet mir zwar alles auf kh/index.php um, doch die variable ist leer.
Natürlich, denn du hast ja nichts „gefangen“, bzw. “captured” auf Englisch. Dafür sind in regulären Ausdrücken runde Klammern zuständig.
Nun möchte ich per rewrite die gesamten Verzeichnisse nach dem Domainnamen in eine Variable packen damit ich diese per PHP dann weiterverarbeiten kann.
Die Info hast du eh schon, schau in $_SERVER nach.
MfG ChrisB
Salut
Nun möchte ich per rewrite die gesamten Verzeichnisse nach dem Domainnamen in eine Variable packen damit ich diese per PHP dann weiterverarbeiten kann.
Die Info hast du eh schon, schau in $_SERVER nach.
Merci, daran habe ich gar nicht gedacht. Ich hab nun die Rule so umgeschrieben:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* kh/index.php [QSA,L]
und lese dann mittels $_SERVER['REQUEST_URI'] den Pfad aus. Komisch ist nur, dass sobald ich mehr als 2 Verzeichnisstiefen habe, die CSS etc. nicht mehr geladen werden:
/kh/bar -> geht
/kh/bar/eins -> CSS wird nicht mehr geladen.
<FilesMatch "\.(htm|php|js|css|htc|png|gif|jpe?g|ico|xml|csv|txt|swf|flv|eot|woff|svg|ttf|pdf|gz)$">
RewriteEngine Off
</FilesMatch>
Schliesse zwar einige Files aus, doch anscheinend stimmt doch was nicht. Weisst du warum?
Gruss und Danke
Thomas
Tach!
Komisch ist nur, dass sobald ich mehr als 2 Verzeichnisstiefen habe, die CSS etc. nicht mehr geladen werden:
/kh/bar -> geht
/kh/bar/eins -> CSS wird nicht mehr geladen.
Alles eine Frage der richtigen Addressierung. Der Browser berechnet die absoluten URLs von relativ adressierten Ressourcen (CSS, JS, Bilder) anhand der ihm bekannten URL. Wenn du solche Umschreibungen machst, musst du entweder alles absolut adressieren oder ständig die korrekten Prefixe in deine Ausgabe schreiben.
<FilesMatch ".(htm|php|js|css|htc|png|gif|jpe?g|ico|xml|csv|txt|swf|flv|eot|woff|svg|ttf|pdf|gz)$">
RewriteEngine Off
</FilesMatch>
Das ist unnötig, weil existierende Dateien ja schon mit -f ausgeschlossen werden.
dedlfix.
Tach!
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* kh/index.php?catslugs=$1 [QSA,L]
Apache-Konfiguration ist kein Javascript, das Forum kennt lang=apache.
> leitet mir zwar alles auf kh/index.php um, doch die variable ist leer.
Es fehlt ein gruppierendes Klammernpaar. Alternativ, wenn sowieso das gesamte Muster verwendet werden soll, geht auch $0 ohne weitere Gruppierung.
> Hat mir jemand einen Tip/Lösung?
Lass den Parameter weg und nimm $\_SERVER['REQUEST\_URI']
dedlfix.