mod_rewrite: URLs mit / (Slash) erzeugen 404, RewriteRule greift nicht

21.06.2012 15:01 Uhr

Tach zusammen,

bei einem Projekt habe ich folgende, allgemein RewriteRule im Einsatz:

RewriteRule ^(.*)\.html$ index.php?page=$1 [L]

Jede .html-Anfrage wird also an mein php-Script durchgereicht und dort abgearbeitet. So weit, so gut. Zumindest, solange die URLs kein / enthalten und damit quasi ein Verzeichnis gemeint sein könnte.

Allerdings habe ich das Problem, dass sobald die URLs ein / enthalten, die Rule nicht mehr greift und mir mein Server einen 404 zurück gibt. URLs wie

http://domain.tld/meine/seite.html

funktionieren leider nicht!

Gibt es ein Flag oder Ähniches, dass man setzen muss, damit die Rule auch dann greift und die Anfrage an mein Script durchgereicht wird?

Habe ich einen Denkfehler?

2 Antworten

#1

21.06.2012 18:03 Uhr

Bei dem CMS Drupal wird vor dem Rewrite immer eine Prüfung gemacht, ob die angeforderte URL als Datei bzw. Ordner existiert und erst danach eine Umleitung versucht. Der Code dafür sieht folgendermaßen aus:

   RewriteEngine on
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Eventuell hilft Dir das bei Deinem Problem weiter.

#2

30.06.2012 20:12 Uhr

einfach ^(.+)/(.+)$ index.php?q=$2 hinzufügen.

Ähnliche Fragen



Datenschutzerklärung · Impressum