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 :(

1145voto

Jonathan Mayhak Punkte 12026

Um mod_rewrite zu verwenden, können Sie den folgenden Befehl im Terminal eingeben:

sudo a2enmod rewrite

Starten Sie nach

sudo /etc/init.d/apache2 restart

oder

sudo service apache2 restart

oder entsprechend der neuen einheitlichen Systemsteuerungsmethode

sudo systemctl restart apache2

Dann können Sie bei Bedarf die folgende .htaccess-Datei verwenden.

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

Die oben genannte .htaccess-Datei (wenn sie in Ihrem DocumentRoot platziert wird) leitet den gesamten Datenverkehr zu einer index.php-Datei im DocumentRoot um, es sei denn, die Datei existiert.

Angenommen, Sie haben die folgende Verzeichnisstruktur und httpdocs ist der DocumentRoot

httpdocs/
    .htaccess
    index.php
    images/
        hello.png
    js/
        jquery.js
    css/
        style.css
includes/
    app/
        app.php

Jede Datei, die in httpdocs existiert, wird dem Anforderer mit der oben gezeigten .htaccess geliefert, jedoch werden alle anderen auf httpdocs/index.php umgeleitet. Ihre Anwendungsdateien in includes/app sind nicht zugänglich.

248voto

Mike Wazowski Punkte 2421

Für meine Situation hatte ich

RewriteEngine On

in meiner .htaccess, zusammen mit dem geladenen Modul, und es hat nicht funktioniert.

Die Lösung für mein Problem bestand darin, meinen vhost-Eintrag zu bearbeiten, um

AllowOverride all

in der -Sektion für die betreffende Website einzuschließen.

98voto

Jarrod Punkte 9120

Versuchen Sie, AllowOverride All einzustellen.


Das zweithäufigste Problem ist, dass die Mod-Rewrite nicht aktiviert ist: a2enmod rewrite und dann Apache neu starten.

93voto

Martin Sax Punkte 1072

Wenn keiner der oben genannten Lösungen funktioniert, versuchen Sie, die Datei /etc/apache2/sites-enabled/000-default zu bearbeiten

Ganz oben finden Sie

    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

Ändern Sie AllowOverride None in AllowOverride All

Dies hat bei mir funktioniert

59voto

Ijas Ahamed N Punkte 4922

Die neue Apache-Version hat sich in gewisser Weise geändert. Wenn Ihre Apache-Version 2.4 ist, müssen Sie zu /etc/apache2/ gehen. Dort wird eine Datei namens apache2.conf sein. Sie müssen diese bearbeiten (Sie sollten Root-Berechtigungen haben). Ändern Sie das Verzeichnis wie folgt

    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted

Starten Sie jetzt Apache neu.

service apache2 reload

Ich hoffe, es funktioniert.

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