Ik wilde vanmiddag eens wat gaan klooien met Zend Framework. Ik wil m'n website een beetje opnieuw gaan opbouwen en aangezien m'n website op een shared hosting environment draait moet het op m'n Mac ook lijken alsof het op een soortgelijke omgeving draait. Dat was op zich niet zo'n probleem. Dacht ik.
Op een Mac heb je in je persoonlijk mappen, een map met Sites die vergelijkbaar is met public_html. M'n applicatie moet tijdens het ontwikkelen gaan draaien in /Users/wgriffioen/Sites/dev10. In deze map staan de volgende mappen en bestanden:
In de map public staat de index.php die gebruikt wordt om de hele applicatie te laden. Ook staat er in die map een .htaccess die alles requests doorstuurt naar die index.php.
Op een website had ik al een manier gevonden om alles door te sturen naar /public. Het volgende heb ik in de .htaccess gezet.
Eerst werkte dit niet (403 error) want de AllowOverride voor de directory /Users/wgriffioen/Sites/ stond op None. Toen ik die op All had gezet, kreeg ik weer een 403. Nadat ik het bestand /etc/apache2/users/wgriffioen.conf had aangepast naar het volgende:
Kreeg ik een 404 met het volgende in de log-bestanden:
In de accesslog staat het volgende voor deze request:
In de errorlog staat het volgende:
Ik heb in /etc/apache2/httpd.conf een aantal wijzigen gemaakt voor AllowOverride, om die overal op All te zetten.
Op de server waar m'n website draait, werkt de .htaccess in de hoofddirectory van de applicatie gewoon dus ik heb het idee dat het niet aan die .htaccess ligt, maar ik heb geen idee meer waar het wel kan zitten.
Op een Mac heb je in je persoonlijk mappen, een map met Sites die vergelijkbaar is met public_html. M'n applicatie moet tijdens het ontwikkelen gaan draaien in /Users/wgriffioen/Sites/dev10. In deze map staan de volgende mappen en bestanden:
code:
1
2
3
4
5
6
| application/ docs/ library/ public/ tests/ .htaccess |
In de map public staat de index.php die gebruikt wordt om de hele applicatie te laden. Ook staat er in die map een .htaccess die alles requests doorstuurt naar die index.php.
Op een website had ik al een manier gevonden om alles door te sturen naar /public. Het volgende heb ik in de .htaccess gezet.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| RewriteEngine On RewriteRule ^\.htaccess$ - [F] RewriteCond %{REQUEST_URI} ="" RewriteRule ^.*$ /public/index.php [NC,L] RewriteCond %{REQUEST_URI} !^/public/.*$ RewriteRule ^(.*)$ /public/$1 RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^.*$ - [NC,L] RewriteRule ^public/.*$ /public/index.php [NC,L] |
Eerst werkte dit niet (403 error) want de AllowOverride voor de directory /Users/wgriffioen/Sites/ stond op None. Toen ik die op All had gezet, kreeg ik weer een 403. Nadat ik het bestand /etc/apache2/users/wgriffioen.conf had aangepast naar het volgende:
code:
1
2
3
4
5
6
| <Directory "/Users/wgriffioen/Sites/"> Options Indexes MultiViews FollowSymlinks AllowOverride all Order allow,deny Allow from all </Directory> |
Kreeg ik een 404 met het volgende in de log-bestanden:
In de accesslog staat het volgende voor deze request:
127.0.0.1 - - [01/Sep/2010:17:44:46 +0200] "GET /~wgriffioen/dev10/ HTTP/1.1" 404 205
In de errorlog staat het volgende:
[Wed Sep 01 17:44:46 2010] [error] [client 127.0.0.1] File does not exist: /Library/WebServer/Documents/public
Ik heb in /etc/apache2/httpd.conf een aantal wijzigen gemaakt voor AllowOverride, om die overal op All te zetten.
Op de server waar m'n website draait, werkt de .htaccess in de hoofddirectory van de applicatie gewoon dus ik heb het idee dat het niet aan die .htaccess ligt, maar ik heb geen idee meer waar het wel kan zitten.