Marc Reichelt: Schönere URLs mit mod_rewrite des Apache

Beitrag lesen

Hi dedlfix,

Das Umleiten auf /... brachte mir neulich eine Endlosschleife ein. Der umgeschriebene interne Request wird aus dem aktuellen Verzeichnis hinaus nach "absolut sonstwo" geschickt und der Rewrite-Prozess beginnt neu. Vielleicht ist das aber im virtuellen Host anders als bei mir in der .htaccess.

Bislang habe ich keine Endlosschleife bekommen. Natürlich muss man hier immer genau darauf achten, was man eigentlich angibt, aber ein Rewrite von /url?parameter auf /andereurl?parameter dürfte ohne Probleme hinhauen. Tut es bei mir nun ja auch.

RewriteRule wertet den Query-String nicht aus. Wenn du dich darauf beziehen möchtest musst du eine RewriteCond verwenden. Ansonsten gibt es das Flag [QSA], mit dem der QS an die umgeschriebene URL angehängt wird.

Nun ja - RewriteRule reicht mir momentan sehr gut aus. :-)

Mit

<Files *.php>
  deny from all
</Files>

geht es nicht, da diese Regel auch auf den internen Request wirkt, und auch /chooselanguage ein 403 bekommt. Meine einzige Idee ist, in /chooselanguage.php REQUEST_URI mit SCRIPT_FILENAME zu vergleichen *) und daraufhin einen 403er header() zurückzugeben.

Stimmt - die <Files>-Direktive ist hier eher weniger angebracht. <Location> funktioniert aber, das werde ich dann wohl auch verwenden. Nun möchte ich "nur noch" bei anderen URLs (siehe meinem anderen Post) einen 404er statt einen 403er zurückgeben. Geht das mit Apache-Mitteln?

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)