[Apache] Mod_rewrite voor gevorderden

Pagina: 1
Acties:

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 20-01 23:34
Het volgende probleem:

De bedoeling is dat alle requests worden herschreven en wel als volgt:

subdomein.host.nl ==> /host/script/subdomein/
subdomein.host.nl/foo/?bar=true ==> /host/script/subdomein/foo/?bar=true
host.nl/foo/bar/ ==> /host/script/www/foo/bar/
enz.

Hierbij wordt dus gebruik gemaakt van multiviews.

Nu heb ik het volgende in de virtualhost-config staan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
        RewriteEngine on

        RewriteCond     %{HTTP_HOST}                    ^.+\.host\.nl$
        RewriteCond     %{REQUEST_URI}                  !^/host/

        RewriteRule     ^(.+)                           %{HTTP_HOST}$1           [C]
        RewriteRule     ^(.+)\.host\.nl(.*)             /host/script/$1/$2       [L]

        RewriteCond     %{HTTP_HOST}                    ^host\.nl$
        RewriteCond     %{REQUEST_URI}                  !^/host/

        RewriteRule     ^(.+)                           %{HTTP_HOST}$1            [C]
        RewriteRule     ^host\.nl(.*)                   /host/script/www/$1       [L]


Regel vier is er om te voorkomen dat er loopjes ontstaan.
Regel 10 t/m 14 zijn er om 'host.nl' als het subdomein 'www' te behandelen.

Dit alles werkt, maar niet helemaal. ;) Volgende problemen doen zich namelijk voor:
- sub.host.nl zonder verdere request uri wordt niet herschreven.
- als ik www.host.nl/info/foo/bar aanroep (en script zorgt ervoor dat phpinfo() wordt weergegeven) dan zie ik deze waarden:

_SERVER["REQUEST_URI"]: "/info/foo/bar"
_SERVER["PATH_INFO"]: "/www/info/foo/bar/foo/bar/"

Waarom worden foo en bar twee keer weergegeven in de path_info? :? Ligt dit aan de rewrite rules?
En natuurlijk, hoe krijg ik deze rules ook werkend voor een aanroep zonder request uri?

bvd!

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 20-01 23:34
Hmm, misschien schrikt de titel af :/

Ik draai:
- Gentoo Linux 2.6.12
- Apache 2.0.54

Betreffende het dubbele parameter probleem; Apache's rewrite log geeft aan:
code:
1
2
3
4
145.99.159.34 - - [26/Jan/2006:00:05:02 +0100] [www.host.nl/sid#8198a58][rid#82efac0/initial]
(3) [per-dir /var/www/localhost/htdocs/] add path info postfix:
/var/www/localhost/htdocs/www.host.nl/foo/bar/boo -> 
/var/www/localhost/htdocs/www.host.nl/foo/bar/boo/bar/boo


iemand? ;(