mod_rewrite für Mac OS X zum Laufen bringen

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

/fooIch 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/DocumentsVerzeichnis. Habe ich recht? Wie kann ich das beheben?

Vielen Dank für Ihre Hilfe!

Antworten (2)

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.

Vielen Dank. Ich denke, du hast wahrscheinlich Recht. Ich habe die Konfiguration der virtuellen Hosts schon einmal ausprobiert – aber ich fand heraus, dass der Nachteil war, dass ich nicht mehr auf meinen /Library/WebServer/Documents-Ordner zugreifen konnte (hier ist phpMyAdmin installiert).
Mit dieser Beispielkonfiguration würde localhost immer noch /Library/WebServer/Documents bedienen. Der erste vhost ist immer der Standard.
Sie haben recht, dieser erste virtuelle Host-Eintrag löste dieses Problem. Deine Lösung funktioniert voll und ganz! Danke noch einmal :)

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>

Quelle: http://forum.joomla.org/viewtopic.php?t=518192