it-swarm.com.de

So aktivieren Sie mod_rewrite für Apache 2.2

Ich habe eine Neuinstallation von Apache 2.2 auf meinem Vista-Rechner, alles funktioniert einwandfrei, bis auf das Umschreiben des Mods.

Ich habe nicht kommentiert

LoadModule rewrite_module modules/mod_rewrite.s

aber keine meiner Umschreiberegeln funktioniert, auch nicht einfache

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, gibt es irgendwelche versteckten Dinge in der Apache-Konfiguration, die das Umschreiben von Mods blockieren könnten?

455
Jakub Arnold

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

Sudo a2enmod rewrite

Starten Sie Apache2 danach neu

Sudo /etc/init.d/Apache2 restart

oder

Sudo service Apache2 restart

oder gemäß der neuen einheitlichen Systemsteuerung

Sudo systemctl restart Apache2

Wenn Sie möchten, können Sie die folgende .htaccess -Datei verwenden.

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

Die obige .htaccess -Datei (falls in Ihrer DocumentRoot abgelegt) leitet den gesamten Datenverkehr in eine index.php -Datei in der DocumentRoot um, sofern die Datei nicht vorhanden ist.

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

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

Alle in httpdocs vorhandenen Dateien werden mit dem oben gezeigten .htaccess an den Anforderer weitergeleitet, alle anderen werden jedoch an httpdocs/index.php weitergeleitet. Auf Ihre Anwendungsdateien in includes/app kann nicht zugegriffen werden.

968
Jonathan Mayhak

Für meine Situation hatte ich

RewriteEngine On

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

Die Lösung für mein Problem bestand darin, meinen vhost-Eintrag so zu bearbeiten, dass er inlcude ist

AllowOverride all

im Abschnitt <Directory> für die betreffende Site.

224
Mike Wazowski

Versuchen Sie die Einstellung: AllowOverride All.


Das zweithäufigste Problem ist, dass das Umschreiben von Mods nicht aktiviert ist: a2enmod rewrite und starten Sie Apache neu.

80
Jarrod

Wenn dies nicht funktioniert, versuchen Sie,/etc/Apache2/sites-enabled/000-default zu bearbeiten

fast oben finden Sie

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

Ändern Sie den AllowOverride None in AllowOverride All

das hat bei mir funktioniert

74
Martin Sax

In Ubuntu:

Lauf:

a2enmod rewrite

und dann:

service Apache2 restart

mod_rewrite wird jetzt aktiviert!

43
nickleefly

Es gibt viele Möglichkeiten, wie Sie dieses Problem beheben können, wenn Sie die Ursache des Problems kennen.

Problem 1

Erstens kann es ein Problem sein, wenn auf Ihrem Apache das Modul mod_rewrite.c nicht installiert oder aktiviert ist.

Aus diesem Grund müssten Sie es wie folgt aktivieren

  1. Öffne deine Konsole und tippe folgendes ein:

    Sudo a2enmod rewrite

  2. Starten Sie Ihren Apache-Server neu.

    service Apache2 restart

Problem 2

  1. Darüber hinaus müssen Sie möglicherweise die Überschreibungsregel aus der Apache-Konfigurationsdatei (entweder Apache2.conf, http.conf oder 000-Standarddatei) ändern, falls dies nicht funktioniert.

  2. Suchen Sie "Verzeichnis/var/www /"

  3. Ändern Sie die Option "Keine überschreiben" in "Alle überschreiben".

Aufgabe 3

Wenn Sie die Fehlermeldung erhalten, dass das Modul zum erneuten Schreiben nicht gefunden wurde, ist Ihr Benutzerverzeichnis-Modul möglicherweise nicht aktiviert. Aus diesem Grund müssen Sie es aktivieren.

  1. Geben Sie dies in die Konsole ein:

    Sudo a2enmod userdir

  2. Versuchen Sie dann, das Umschreibemodul zu aktivieren, falls es noch nicht aktiviert ist (wie oben erwähnt).

Um weiter zu lesen, können Sie diese Seite besuchen: http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html

28
Kripa Jayakumar

Öffnen Sie das Terminal und geben Sie a2enmod rewrite ein. Dadurch wird Ihr mod_rewrite -Modul für Apache aktiviert.

Gehen Sie dann zu /etc/Apache2/sites-available und bearbeiten Sie die Standarddatei. (Hierzu müssen Sie über Schreibrechte für diese Datei und den für Websites verfügbaren Ordner verfügen.)

Ersetzen Sie unten durch die vorhandenen Zeilen 4 bis 14

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Nun starte deinen Apache neu mit /etc/init.d/Apache2 restart oder service Apache2 restart

Machen Sie noch einmal einen sauberen URL-Test und dieses Mal wird er bestanden.

26
Umesh Patil

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. Es wird eine Datei mit dem Namen Apache2.conf geben. Sie müssen diesen bearbeiten (Sie sollten Root-Berechtigung haben). Ändern Sie den Verzeichnistext wie folgt

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Starten Sie nun Apache neu.

service Apache2 reload

Hoffe, es funktioniert.

23
Ijas Ahamed N

<edit>

Ich habe gerade bemerkt, dass Sie "mod_rewrite.s" anstelle von "mod_rewrite.so" gesagt haben - ich hoffe, das ist ein Tippfehler in Ihrer Frage und nicht in der Datei "httpd.conf"! :)

</ edit>

Ich bin mehr daran gewöhnt, Apache unter Linux zu verwenden, aber ich musste dies neulich tun.

Schauen Sie sich zunächst Ihr Apache-Installationsverzeichnis an. (Ich gehe davon aus, dass Sie es hier unter "C:\Programme" installiert haben.)

Schauen Sie sich den Ordner "C:\Programme\Apache Software Foundation\Apache2.2\modules" an und vergewissern Sie sich, dass sich dort eine Datei mit dem Namen mod_rewrite.so befindet. (Sollte es sein, wird es als Teil der Standardinstallation bereitgestellt.

Öffnen Sie als nächstes "C:\Programme\Apache Software Foundation\Apache2.2\conf" und öffnen Sie httpd.conf. Stellen Sie sicher, dass die Zeile:

#LoadModule rewrite_module modules/mod_rewrite.so

ist unkommentiert:

LoadModule rewrite_module modules/mod_rewrite.so

Wenn Sie die RewriteEngine standardmäßig aktivieren möchten, möchten Sie möglicherweise Folgendes hinzufügen

<IfModule mod_rewrite>
    RewriteEngine On
</IfModule>

bis zum Ende Ihrer httpd.conf-Datei.

Wenn nicht, stellen Sie sicher, dass Sie angeben

RewriteEngine On

irgendwo in Ihrer .htaccess-Datei.

15
Danny Battison

Ich habe das einfach gemacht

Sudo a2enmod rewrite

anschließend müssen Sie den Apache-Dienst mit dem folgenden Befehl neu starten

Sudo service Apache2 restart
5
user3470929

Alter Thread, möchte nur setzen, dass nicht AllowOverride auf all gesetzt wird, sondern stattdessen einen bestimmten Mod benutzt, den du benutzen willst,

AllowOverride mod_rewrite mod_mime

Und diese Zeile sollte nicht kommentiert werden

LoadModule rewrite_module modules/mod_rewrite.so

Referenzen

3
Abhishek Gurjar

Verwenden Sie den folgenden Befehl

Sudo a2enmod rewrite

Und der Neustart Apache durch den folgenden Befehl

Sudo service Apache2 restart
3
prasoon

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

ErrorDocument 404 /index.php?page=404
3
Michael Cramer

Als ich zum ersten Mal mit Mod_rewrite-Regeln kämpfte, die meinen Verkehr ignorierten, erfuhr ich (frustrierend), dass ich sie im falschen <VirtualHost> platziert hatte, was bedeutete, dass mein Verkehr alle ignorierte von ihnen, egal wie gut sie geschrieben waren. Stellen Sie sicher, dass Ihnen dies nicht passiert:

# Change the log location to suit your system. RewriteLog /var/log/Apache-rw.log RewriteLogLevel 2

Diese Parameter werden aktiviert, wenn Sie Apache ordnungsgemäß neu starten, damit Sie sie in mod_rewrite wiederverwenden und das Verhalten genau überwachen können. Wenn Ihr Problem behoben ist, drehen Sie den RewriteLogLevel zurück und feiern Sie.

In 100% meiner Erfahrung habe ich festgestellt, dass das RewriteLog mir geholfen hat, das Problem mit meinen Umschreiberegeln zu entdecken. Ich kann das nicht genug empfehlen. Viel Glück bei der Fehlersuche!

Dieses Lesezeichen ist auch Ihr bester Freund: http://httpd.Apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog

3
Garrett Ellis

Was bei mir funktioniert hat (in Ubuntu):

Sudo su
cd /etc/Apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load

Stellen Sie außerdem, wie bereits erwähnt, sicher, dass AllowOverride all im entsprechenden Abschnitt von /etc/Apache2/sites-available/default eingestellt ist.

2
Benubird