Ik heb een heel vreemd probleem bij een combinatie van mod_rewrite en mod_vhost_alias.
Ik heb de volgende regel in de apache configuratie, die zorgt ervoor dat alle domeinen vanuit de juiste directory worden geladen.
DIt laadt een verzoek aan www.test.nl uit /var/www/test.nl/www . Tot zover gaat het allemaal goed. Wanneer ik echter een .htaccess met een RewriteRule aanmaak gaat het fout.
Zodra er een URL gerewrite wordt krijg ik een foutmelding van apache dat het bestand niet gevonden kan worden. Het gekke is dat er dan een absolute bestandslocatie wordt doorgegeven (en dus niet relatief van de webroot). Het bestand waarvan wordt gezegd bestaat echter wel en heeft de juiste permissies. Ik krijg dan de volgende fout:
Terwijl het bestand wel degelijk bestaat. MultiViews heb ik in de .htaccess al uitgezet. Op een vergelijkbare server (ook gentoo) werkt het wel, daar maak ik geen gebruik van vhosts.
Mijn volledige vhosts.conf:
Zo mogelijk nog vreemder is dat de access_log een 200 status aangeeft (ipv de 404 die ik in de browser krijg)
Ik heb de volgende regel in de apache configuratie, die zorgt ervoor dat alle domeinen vanuit de juiste directory worden geladen.
code:
1
| VirtualDocumentRoot /var/www/%-2.0.%-1.0/%-3+ |
DIt laadt een verzoek aan www.test.nl uit /var/www/test.nl/www . Tot zover gaat het allemaal goed. Wanneer ik echter een .htaccess met een RewriteRule aanmaak gaat het fout.
Zodra er een URL gerewrite wordt krijg ik een foutmelding van apache dat het bestand niet gevonden kan worden. Het gekke is dat er dan een absolute bestandslocatie wordt doorgegeven (en dus niet relatief van de webroot). Het bestand waarvan wordt gezegd bestaat echter wel en heeft de juiste permissies. Ik krijg dan de volgende fout:
met de volgende RewriteRule:The requested URL /var/www/test.nl/www/contact.php was not found on this server.
code:
1
| RewriteRule ^contact$ contact.php [L] |
Terwijl het bestand wel degelijk bestaat. MultiViews heb ik in de .htaccess al uitgezet. Op een vergelijkbare server (ook gentoo) werkt het wel, daar maak ik geen gebruik van vhosts.
Mijn volledige vhosts.conf:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| NameVirtualHost *:80
<IfDefine DYNAMIC_VHOSTS>
UseCanonicalName Off
LogFormat "%V %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" dynamic_vhosts
CustomLog logs/access_log dynamic_vhosts
<VirtualHost *:80>
<Directory "/var/www">
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<IfModule mod_vhost_alias.c>
VirtualDocumentRoot /var/www/%-2.0.%-1.0/%-3+
VirtualScriptAlias /var/www/%-2.0.%-1.0/%-3+/cgi-bin
<DirectoryMatch "^/var/www/[^/]+/cgi-bin">
AllowOverride None
Options ExecCGI
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</DirectoryMatch>
</IfModule>
</VirtualHost>
</IfDefine> |
Zo mogelijk nog vreemder is dat de access_log een 200 status aangeeft (ipv de 404 die ik in de browser krijg)
test.nl xx.xx.xx.xx - - [14/Jun/2007:22:54:18 +0200] "GET /contact HTTP/1.1" 200 290 "http://test.nl/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)"
Ik ontken het bestaan van IE.