Wie aktiviere ich mod_rewrite in Apache?

164

Ich habe gerade den LAMP-Stack auf meinem Ubuntu-System installiert.

Die Umleitung funktioniert bei mir nicht. Ich weiß nicht, wie ich das beheben soll. Kann mir jemand helfen?

vinoth
quelle
3
IMHO ist diese Frage nicht Ubuntu-spezifisch und sollte auf Server Fault migriert werden .
Paolo
2
Das OP hat Lamp auf UBUNTU installiert. Wie viel Ubuntu-spezifischer möchten Sie?
Wojox
1
@wojov: Ich weiß nichts über diesen Fall, aber dieses Argument funktioniert nicht. "Wie kann ich diese Anwendung (unter Ubuntu) verwenden?" sind meistens off-topic.
23
Dies ist kein "Wie kann ich eine Anwendung verwenden", sondern ein "Wie kann ich eine bestimmte Funktion in Ubuntu aktivieren". Apache unter Ubuntu verwendet ein anderes Konfigurationslayout, in dem jedes Modul und jeder virtuelle Host eine Datei ist /etc/apache2und das mit a2*Programmen aktiviert werden kann.
Lekensteyn
Sie sollten beschreiben, was Sie getan haben, um das Problem
einzugrenzen

Antworten:

238

Um das Rewrite-Modul zu aktivieren, führen Sie "apache2 enable module rewrite" aus:

sudo a2enmod rewrite

Sie müssen den Webserver neu starten, um die Änderungen zu übernehmen:

sudo service apache2 restart

Wenn Sie sich mit mod_rewrite in Plan - .htaccessDateien benötigen Sie auch die Verwendung zu ermöglichen , .htaccessindem Dateien AllowOverride Nonezu AllowOverride FileInfo. Bearbeiten Sie für die Standardwebsite Folgendes /etc/apache2/sites-available/default:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

Nach einer solchen Änderung müssen Sie Apache erneut starten.

Lekensteyn
quelle
18
Ich hatte mehr Erfolg mit AllowOverride All
Valentin Despa
Vielen Dank! sudo a2enmod rewriteund FileInforepariert es für mich!
d -_- b
22
Für mich war diese Datei /etc/apache2/apache2.conf, wo ich diesen Konfigurationseintrag fand
doc_id
Ja, die beiden Änderungen haben das Problem behoben.
Adelin
Es funktioniert nicht für mich. Ich habe hier eine Frage gestellt askubuntu.com/questions/809619/failing-to-rewrite-url
Suhail Gupta
49

Ich wage es, eine spezielle Antwort (als Folge der großartigen Antwort oben) in Bezug auf Ubuntu 14.04 hinzuzufügen und .htaccess:

In 14.04 wird der Name der Standardkonfigurationsdatei geändert in 000-default.conf:

sudo gedit /etc/apache2/sites-available/000-default.conf

Fügen Sie am Ende der Datei Folgendes hinzu:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

Aus irgendeinem Grund ist in Ubuntu 14.04 und Apache2 der Root auf gesetzt /www/html. Wenn Sie wollen wieder gute alte den Webserver root ändern /www, open 000-default.confund ändern

DocumentRoot /var/www/html/

zu

DocumentRoot /var/www/

und dann sollte es natürlich sein

<Directory "/var/www">
    AllowOverride All
</Directory>
Davidkonrad
quelle
1
Danke für die Info! Auf diese / neue Weise können wir www als Ordner verwenden, in den wir alle Websites stellen, und html ist standardmäßig "website" für localhost. Kann wichtig sein, wenn Sie mit dem Öffnen von Ports für die Welt spielen - auf diese Weise kann Ihr localhost keine Ordner anderer Projekte sehen.
Vladimir Vukanac
1
Es funktioniert nicht für mich. Ich benutzeUbuntu 14.04.4 LTS
Suhail Gupta