Ich kann mod_rewrite nicht auf Lion zum Laufen bringen. Ich entwickle eine Reihe von Websites lokal in ~/Sites unter Verwendung von .htaccess-Dateien. Ich bin auf 10.7.3 und habe keine Konfigurationsdateien berührt, außer der Aktivierung von PHP in httpd.conf (was funktioniert).
Ich weiß, dass es hier mindestens 2 Fragen dazu gibt, aber die dort aufgeführten Lösungen funktionieren nicht. Die anderen Lösungen, die ich im Internet gefunden habe, auch nicht. Ich muss etwas Dummes tun oder etwas übersehen, sonst werde ich wahrscheinlich verrückt, aber es funktioniert nicht.
Ich habe alle üblichen Sachen ausprobiert:
/private/etc/apache2/users/<myusername>.conf
Wechseln Sie in AllowOverride None
zu AllowOverride All
und starten Sie den Webserver neu
Ändern Sie außerdem in /private/etc/apache2/httpd.conf
alle/alle Vorkommen von AllowOverride None
in AllowOverride All
-- Ich habe es an all den verschiedenen Stellen versucht, an denen diese Anweisungen zu finden sind
Probieren Sie grundsätzlich alle möglichen Kombinationen von Werten für die Options
Linie über/unter der AllowOverride
Linie aus, einschließlich der Werte:Indexes MultiViews FollowSymLinks All
Den Webserver nach einer solchen Änderung natürlich immer neu starten. Nichts davon funktioniert. Alle meine sauberen URLs funktionieren einfach nicht; Ich erhalte eine 404 - nicht gefunden. Das Fehlerprotokoll von Apache gibt mir nur "Datei existiert nicht:" Fehler. Es scheint also, dass das mod_rewrite-Modul überhaupt nicht funktioniert.
Ich habe dafür gesorgt, dass mod_rewrite in die httpd.conf geladen ist, was es auch ist; bei einer Lion-Installation ist dies standardmäßig der Fall.
Das Verrückte ist, dass alles perfekt funktioniert hat – bis ich auf eine neue Maschine mit Lion migrierte. Das heißt, ich schließe einen Fehler in meinen .htaccess-Dateien aus, weil ich weiß, dass es vorher funktioniert hat. Wenn es sich um einen Fehler in der .htaccess handelte, würde ich auch eine Art Fehlermeldung vom mod_rewrite-Modul im error_log von Apache erhalten, die mir zumindest mitteilt, dass das Modul selbst aufgerufen wird. Aber das passiert nicht.
Übersehe ich etwas? Muss ich die Konfigurationseinstellungen woanders ändern? Muss ich die Konfiguration von PHP ändern? Warum funktionieren die Anweisungen (wie Aktivieren von mod_rewrite unter MacOSX Lion und wie man mod_rewrite unter Mac OS X zum Laufen bringt ) für andere Leute, aber nicht für mich? :)
Ich habe damit schon Stunden verschwendet. Jede Hilfe wäre sehr willkommen.
Sie sollten sicherstellen, dass in Ihrer /etc/apache2/users/username.conf Folgendes steht:
<Directory "/Users/username/Sites/">
Options Indexes MultiViews FollowSymlinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Wesentlich sind hier die FollowSymlinks und AllowOverride. Während Sie in Ihrer Frage auf beides hinweisen, haben Sie diese möglicherweise nicht korrekt zusammen konfiguriert.
Stellen Sie sicher, dass in httpd.conf /private/etc/apache2/extra/httpd-userdir.conf ebenfalls enthalten ist. Es ist standardmäßig.
Starten Sie nach allen Änderungen den Webserver neu, damit die Änderungen wirksam werden.
Wenn Sie immer noch Probleme haben, liegt möglicherweise ein Problem mit Ihren tatsächlichen Umschreibungsregeln vor. Haben Sie sie zuvor auch in einem .htaccess-Kontext verwendet? Beachten Sie, dass in einer .htaccess-Datei die Rewrite-Regel-Regex mit einem Anforderungs-URI ohne führenden Schrägstrich und immer relativ zu dem Verzeichnis, in dem sich die .htaccess -Datei befindet, abgeglichen wird , während in einer globalen httpd.conf die URI mit einem führenden Schrägstrich übereinstimmen muss und ist relativ zum Webstamm. Da Sie Ihre .htaccess-Datei vermutlich in einem Unterverzeichnis von ~/Sites haben, verhalten sich Ihre Rewrite-Regeln möglicherweise anders, als wenn sich die .htaccess-Datei im Webstamm eines (virtuellen) Hosts befindet.
Um mod_rewrite zu debuggen, können Sie die Rewrite-Protokollierung aktivieren. Sie sollten das in /etc/apache2/httpd.conf aktivieren:
RewriteLogLevel 3
RewriteLog /path/to/rewrite.log
Das Hinzufügen von Optionen + FollowSymLinks hat bei mir gut funktioniert
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule
Options +FollowSymLinks
? Ich füge einfach diese Zeile hinzu, es funktioniert für michIch hatte ein ähnliches Problem, bei dem meine .htaccess-Datei vollständig ignoriert wurde, während sie sich in einem Unterordner in meinem ~/Sites-Verzeichnis unter einem korrekt eingerichteten VirtualHost befand.
Nachdem ich die letzte Stunde damit verbracht hatte, mit verschiedenen Konfigurationsdateien herumzuspielen und AllowOverride All an verschiedenen Stellen einzustellen, fand ich schließlich heraus, dass die .htaccess-Datei, obwohl sie im Finder wie eine .htaccess-Datei aussah, tatsächlich eine .htaccess.txt-Datei mit der .htaccess.txt-Datei war Erweiterung versteckt.
Um Ihre .htaccess-Datei zu überprüfen und zu ändern, klicken Sie mit der rechten Maustaste darauf und wählen Sie Get Info und stellen Sie dann sicher, dass Sie alle führenden Erweiterungen am Ende entfernen, wie z. B. die, die ich hatte:
Und jetzt funktioniert es!
Unten .htaccess-Einträge beheben für mich
Options Indexes FollowSymLinks
<ifModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /~charles/Sites/Timesheet/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [NC,QSA,L]
</ifModule>
Platzieren Sie .htaccess in /Library/WebServer/Documents und öffnen Sie "localhost/"; zum Testen, funktioniert wie erwartet. Es funktioniert einfach nicht in "~/Sites". Danke Niels Heidenreich dafür!
Wenn Sie Folgendes eingeben: /Benutzer/Benutzername/App_Name
Das / bezieht sich auf das Stammverzeichnis des Webservers:
"localhost/"
Wenn Sie /~username/app_name in Ihrer Umschreibung verwenden, sollte es funktionieren.
/
, sind immer absolute Pfade für Apache, siehe Definition von Webserver-Root in http.conf ( <Directory "/Library/WebServer/Documents">
)
Nils Heidenreich
Nils Heidenreich
Dan J