Ich kann mod_rewrite nicht dazu bringen, an Lion zu arbeiten. Ich entwickle eine Reihe von Websites lokal in ~ / Sites unter Verwendung von .htaccess-Dateien. Ich bin auf 10.7.3 und habe keine Konfigurationsdateien abgesehen von der Aktivierung von PHP in httpd.conf (was funktioniert) berührt.
Ich weiß, dass es hier mindestens zwei Fragen gibt, aber die dort aufgeführten Lösungen funktionieren nicht. Auch die anderen Lösungen, die ich im Web gefunden habe. Ich muss etwas Dummes tun oder etwas übersehen, sonst werde ich wahrscheinlich verrückt, aber es funktioniert nicht.
Ich habe alle üblichen Sachen ausprobiert:
In
/private/etc/apache2/users/<myusername>.conf
ändern ,AllowOverride None
umAllowOverride All
den Web - Server und neu startenZusätzlich kann in
/private/etc/apache2/httpd.conf
ändern, jede / alle Vorkommen (en)AllowOverride None
zuAllowOverride All
- ich habe versucht , es in all den verschiedenen Orten , an denen diese Richtlinien zu finden sindProbieren Sie grundsätzlich alle möglichen Wertekombinationen für die
Options
Zeile über / unter derAllowOverride
Zeile aus, einschließlich der folgenden Werte:Indexes MultiViews FollowSymLinks All
Nach einer solchen Änderung muss der Webserver natürlich immer neu gestartet werden. Nichts davon funktioniert. Alle meine sauberen URLs funktionieren einfach nicht. Ich bekomme eine 404 - nicht gefunden. Das Fehlerprotokoll von Apache gibt nur die Fehlermeldung "Datei existiert nicht:" aus. Es scheint also, dass das Modul mod_rewrite überhaupt nicht funktioniert.
Ich habe dafür gesorgt, dass mod_rewrite in die httpd.conf geladen wird. Dies ist bei einer Lion-Installation standardmäßig der Fall.
Das Verrückte ist, dass alles perfekt funktioniert hat - bis ich auf eine neue Maschine mit Lion umgestiegen bin. Das heißt, ich schließe einen Fehler in meinen .htaccess-Dateien aus, weil ich weiß, dass er zuvor funktioniert hat. Wenn es sich um einen Fehler in der .htaccess-Datei handelt, würde das Modul "mod_rewrite" in Apaches "error_log" eine Fehlermeldung ausgeben, die zumindest darauf hinweist, dass das Modul selbst aufgerufen wird. Aber das passiert nicht.
Übersehen ich etwas? Muss ich die Konfigurationseinstellungen an einer anderen Stelle ändern? Muss ich die PHP-Konfiguration ändern? Warum funktionieren die Anweisungen (wie " Wie aktiviere ich mod_rewrite unter MacOSX Lion und lasse mod_rewrite unter Mac OS X funktionieren") für andere Benutzer, aber nicht für mich? :)
Ich habe schon Stunden damit verschwendet. Jede Hilfe wäre sehr dankbar.
quelle
Antworten:
Sie sollten sicherstellen, dass Sie in Ihrer /etc/apache2/users/username.conf Folgendes haben:
Die FollowSymlinks und AllowOverride sind hier unerlässlich. Während Sie beide in Ihrer Frage anspielen, haben Sie diese möglicherweise nicht richtig konfiguriert.
Stellen Sie sicher, dass httpd.conf /private/etc/apache2/extra/httpd-userdir.conf ebenfalls enthalten ist. Dies ist standardmäßig der Fall.
Starten Sie den Webserver nach allen Änderungen neu, damit die Änderungen wirksam werden.
Wenn Sie immer noch Probleme haben, liegt möglicherweise ein Problem mit Ihren tatsächlichen Umschreiberegeln vor. Haben Sie sie zuvor auch in einem .htaccess-Kontext verwendet? Beachten Sie, dass in einer .htaccess- Datei die reguläre Schreibregel regex mit einem Anforderungs-URI ohne den führenden Schrägstrich verglichen wird und sich immer auf das Verzeichnis bezieht, in dem sich die .htaccess- Datei befindet , wohingegen in einer globalen httpd.conf-Datei der URI mit einem führenden Schrägstrich übereinstimmen muss und lautet relativ zum web root. Da Sie vermutlich über Ihre .htaccess-Datei in einem Unterverzeichnis von ~ / Sites verfügen, können sich Ihre Umschreiberegeln anders verhalten, als wenn sich die .htaccess-Datei im Webstamm eines (virtuellen) Hosts befindet.
Zum Debuggen von mod_rewrite können Sie die Umschreibeprotokollierung aktivieren. Sie sollten das in /etc/apache2/httpd.conf aktivieren:
quelle
Das Hinzufügen von Optionen + FollowSymLinks hat für mich gut funktioniert
quelle
Options +FollowSymLinks
? Ich füge nur die Zeile hinzu, die für mich funktioniertIch hatte ein ähnliches Problem, bei dem meine .htaccess-Datei in einem Unterordner in meinem ~ / Sites-Verzeichnis unter einem VirtualHost, der korrekt eingerichtet wurde, vollständig ignoriert wurde.
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 Info abrufen. Stellen Sie dann sicher, dass am Ende alle führenden Erweiterungen entfernt sind, z. B .:
Und jetzt funktioniert es!
quelle
Unten .htaccess Einträge für mich zu beheben
quelle
Platziere .htaccess in / Library / WebServer / Documents und öffne "localhost /"; zum testen funktioniert es wie erwartet. Es funktioniert einfach nicht in "~ / Sites". Danke Niels Heidenreich dafür!
quelle
Wenn Sie Folgendes eingeben: / Users / Benutzername / Anwendungsname
Das / verweist auf das Stammverzeichnis des Webservers:
"localhost /"
Wenn Sie beim Umschreiben / ~ Benutzername / Anwendungsname verwenden, sollte dies funktionieren.
quelle
/
sind für Apache immer absolute Pfade, siehe Definition des Webserver-Stamms in http.conf (<Directory "/Library/WebServer/Documents">
)