Ich versuche, Mod Rewrite auf meinem Mac zum Laufen zu bringen. Dies ist der Inhalt der .htaccess-Datei:
<Files *\.ini>
order allow,deny
deny from all
</Files>
RewriteEngine on
RewriteRule .* index.php
/foo
Ich weiß, dass dies aktiv ist, weil es INI-Dateien ordnungsgemäß blockiert und die fiktive Anforderung anscheinend in umschreibt index.php
, da dies der Fehler ist, den ich im Browser sehe:
Die angeforderte URL /Users/rwel/Sites/dev/quaestio/index.php wurde auf diesem Server nicht gefunden.
Die Datei index.php enthält derzeit nur zu Testzwecken eine Exit-Anweisung, die beim direkten Aufruf funktioniert. Die Frage ist also, was läuft schief? Ich ging in das Apache-Fehlerprotokoll und sah Folgendes:
[Do Nov 03 14:36:02 2011] [Fehler] [Client 127.0.0.1] Datei existiert nicht: /Library/WebServer/Documents/Users
Das Problem könnte also sein, dass nicht im Stammverzeichnis gesucht wird, sondern relativ zum /Library/WebServer/Documents
Verzeichnis. Habe ich recht? Wie kann ich das beheben?
Vielen Dank für Ihre Hilfe!
Sie sollten virtuelle Hosts einrichten.
Entkommentieren Sie in /etc/apache2/httpd.conf die Zeile:
#Include /private/etc/apache2/extra/httpd-vhosts.conf
Bearbeiten Sie nun /etc/apache2/extra/httpd-vhosts.conf. Entfernen Sie die Beispiel-Vhosts, aber geben Sie als ersten einen Standard-Vhost an. Hier ist eine Beispielkonfiguration.
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /Library/WebServer/Documents
</VirtualHost>
<VirtualHost *:80>
ServerName myproject
DocumentRoot /Users/username/Sites/myproject
<Directory /Users/username/Sites/myproject>
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
Starten Sie Apache neu, indem Sie apache2ctl restart
.
Sie sollten Ihrer Datei /etc/hosts einen Eintrag hinzufügen, damit Ihr Servername aufgelöst wird:
127.0.0.1 myproject
Wenn Sie nun auf http://myproject zugreifen , sind Ihre Rewrite-Regeln relativ zum rechten Dokumentenstamm.
Zusätzlich zu Gerrys Lösung habe ich AllowOverride All hinzugefügt, was in meinem Fall das Umschreiben ermöglichte;
<VirtualHost *:80>
DocumentRoot /Library/WebServer/Documents
</VirtualHost>
<VirtualHost *:80>
ServerName myproject
DocumentRoot /Users/username/Sites/myproject
<Directory /Users/username/Sites/myproject>
Order Allow,Deny
Allow from all
AllowOverride All
</Directory>
</VirtualHost>
Rijk
Gerry
Rijk