551 Stimmen

Wie man mod_rewrite für Apache 2.2 aktiviert

Ich habe eine frische Installation von Apache 2.2 auf meinem Vista-Rechner, alles funktioniert gut, außer Mod Rewrite.

Ich habe

LoadModule rewrite_module modules/mod_rewrite.s

entkommentiert, aber keiner meiner Rewrite-Regeln funktioniert, auch einfache wie

RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404

Alle Regeln, die ich verwende, funktionieren auf meinem Hosting, also sollten sie in Ordnung sein. Meine Frage ist also, ob es versteckte Einstellungen in der Apache-Konfiguration gibt, die Mod Rewrite blockieren könnten?

1 Stimmen

Eigentlich war das Problem, dass ich den falschen Pfad hatte, weil ${DOCUMENT_ROOT} mich zum Stammverzeichnis führte, was auf dem Hosting in Ordnung war, aber auf dem lokalen Rechner falsch war, also war das Problem nicht nur RewriteEngine On, was ich bereits hatte ..

0 Stimmen

Können Sie bitte die akzeptierte Antwort auf diese hier ändern? Der Autor der aktuellen akzeptierten Antwort hat zugegeben, dass sie nicht gut genug ist.

1 Stimmen

Wie man mod_rewrite in Ubuntu 12.04 LTS aktiviert (sollte auch in Debian funktionieren). Dies zeigt Installation UND Aktivierung, was die untenstehenden Tutorials überraschenderweise nicht tun :(

8voto

user3470929 Punkte 1268

Ich habe gerade das gemacht

sudo a2enmod rewrite

dann musst du den Apache-Dienst mit folgendem Befehl neu starten

sudo service apache2 restart

7voto

Abhishek Gurjar Punkte 7320

Alter Thread, ich möchte nur darauf hinweisen, dass AllowOverride nicht auf all gesetzt werden sollte, sondern stattdessen das spezifische Modul verwenden sollte, das Sie verwenden möchten,

AllowOverride mod_rewrite mod_mime

Und diese Zeile sollte nicht auskommentiert werden

LoadModule rewrite_module modules/mod_rewrite.so

Referenzen

4voto

Garrett Ellis Punkte 101

Beim ersten Mal, als ich Probleme mit mod_rewrite-Regeln hatte, die meinen Traffic ignorierten, habe ich frustrierend gelernt, dass ich sie im falschen platziert hatte, was bedeutete, dass mein Traffic sie alle ignorieren würde, egal wie gut sie geschrieben waren. Stellen Sie sicher, dass Ihnen das nicht passiert:

# Ändern Sie den Protokollspeicherort, um ihn an Ihr System anzupassen. RewriteLog /var/log/apache-rw.log RewriteLogLevel 2

Diese Parameter werden aktiviert, wenn Sie einen Graceful Restart von Apache durchführen, damit Sie sie einschalten und das Verhalten von mod_rewrite genau überwachen können. Sobald Ihr Problem behoben ist, stellen Sie das RewriteLogLevel wieder herunter und feiern Sie.

In 100% meiner Erfahrung habe ich festgestellt, dass das RewriteLog mir geholfen hat, das Problem mit meinen Rewrite-Regeln zu entdecken. Ich kann dies nicht genug empfehlen. Viel Erfolg bei der Fehlersuche!

Außerdem ist dieses Lesezeichen Ihr bester Freund: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog

3voto

Michael Cramer Punkte 4832

Es gibt offensichtlich mehr als eine Möglichkeit, dies zu tun, aber ich würde vorschlagen, die Standards zu verwenden:

ErrorDocument 404 /index.php?page=404

3voto

Benubird Punkte 16981

Was für mich funktioniert hat (in ubuntu):

sudo su
cd /etc/apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load

Außerdem, wie bereits erwähnt, stellen Sie sicher, dass AllowOverride all im relevanten Abschnitt von /etc/apache2/sites-available/default gesetzt ist

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X