mod_rewrite
Eddie
- webserver
Hallo allerseits,
ich wuerde gerne per mod_rewrite folgende Umwandlungen vornehmen:
/legal/disclaimer.html => /index.php?m=d
/legal/imprint.html => /index.php?m=i
Das ist ein einfaches Beispiel, im Normalfall habe ich wesentlich laengere Pfade und nicht nur 2 Dateien. Darum will ich auch jeweils in einer ersten RewriteRule nur den Dateinamen extrahieren.
======================
RewriteCond %{REQUEST_URI} ^/legal/.*.html$
RewriteRule ^legal/(.*).html$ $1
Das funktioniert aber so nicht, denn anstatt nur "imprint", steht jetzt ploetzlich "imprint/imprint.html" in dem Ausdruck.
Stattdessen wuerde also
RewriteRule ^imprint/imprint.html$ /index.php?m=i [L]
funktionieren.
Was mache ich denn falsch?
Danke fuer Hilfe,
Eddie
Hallo Eddie,
Das funktioniert aber so nicht, denn anstatt nur "imprint", steht jetzt ploetzlich "imprint/imprint.html" in dem Ausdruck.
Hast Du RewriteBase richtig gesetzt?
Viele Grüße,
Christian
Hallo Christian,
Hast Du RewriteBase richtig gesetzt?
Nein, hab ich garnicht gesetzt. Und ehrlich gesagt habe ich auch nicht verstanden, was das eigentlich bewirkt. Waere wirklich nett, wenn Du mir da einen Tipp geben koenntest!
Danke, Eddie
Hallo Eddie,
Nein, hab ich garnicht gesetzt. Und ehrlich gesagt habe ich auch nicht verstanden, was das eigentlich bewirkt. Waere wirklich nett, wenn Du mir da einen Tipp geben koenntest!
Wenn Du mod_rewrite innerhalb von .htaccess verwendest, dann brauchst Du RewriteBase (es sei denn, Du spuckst nur absolute HTTP-Weiterleitungen aus oder hast so etwas wie [F] oder so).
Denn: Wenn Du Deine Regel
RewriteCond %{REQUEST_URI} ^/legal/.*.html$
RewriteRule ^legal/(.*).html$ $1
hast, dann bewirkt letztere, dass auf 'imprint' umgeschrieben wird. Allerdings: Wo zum Teufel soll imprint vorhanden sein? (Warum der Apache hier gerade imprint/imprint.html macht, ist mir allerdings auch unerklärlich)
Gibst Du nun
RewriteBase /
an, dann weiß der Apache, dass sich 'imprint' in / befindet. Würdest Du RewriteBase /hallo angeben, dann würde der Apache nach /hallo/imprint umleiten. Der Apache weiß nämlich auf Verzeichnisebene (.htaccess) nicht, welche URI zu dem Verzeichnis gehört. (kann er auch gar nicht)
Viele Grüße,
Christian