Sven Rautenberg: RewriteCond und RewriteRule bei Apache auf 1&1

Beitrag lesen

Moin!

RewriteEngine on
RewriteCond %{REQUEST_URI} (.*)/(.*)/(.*)/(.*)/(.*)/default.html$
RewriteRule (.*)/(.*)/(.*)/(.*)/(.*)/default.html$ /vdir/index.php?nav=$1&ud=$2&uud=$3&limit=$4&job_id=$5

Nun kann es aber sein, dass nur die ersten beiden $ übergeben werden.
Ruft man also die URL /test/test2/default.html auf, gibt der Server richtiger Weise einen 404-Fehler aus. /test/test2/0/0/0/default.html wäre hier wohl besser gewesen.

Warum so kompliziert? Du willst im Prinzip, dass dein gesamter URL-Baum, der sich aus einem oder mehreren Verzeichnissen zusammensetzt und auf "default.html" endet, auf ein einziges Skript gemappt wird.

Dann mach das doch auch einfach:
RewriteRule default.html$ /vdir/index.php

In deiner PHP-Datei kannst du dann beispielsweise $_SERVER['REQUEST_URI'] abfragen und die angeforderte URL ganz nach Belieben auseinandernehmen.

Es ist vielleicht nicht verkehrt, in einer oder mehrerer RequestCond-Zeilen noch zu prüfen, ob eines dieser virtuellen Verzeichnisse angefordert wurde. Insbesondere sollte vielleicht geprüft werden, dass "/vdir/" gerade _nicht_ angefordert wurde. Das Überlappen von virtuellen und realen URLs wäre sonst vielleicht etwas ungünstig.

- Sven Rautenberg

--
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|