wake-up-neo.com

.htaccess funktioniert nicht Apache

Ich habe einen Server vom AWS EC2-Dienst, der unter Linux Ubuntu ausgeführt wird, und ich habe Apache, PHP und MySQL installiert.

Ich habe meinem Dokumentenstamm .htaccess Eine /var/www/html - Datei hinzugefügt.

Ich habe diesen Code eingegeben: ErrorDocument 404 /var/www/html/404.php Und er wird immer noch nicht angezeigt.

Ich habe diesen Befehl mehrmals eingegeben: Sudo service httpd restart, Um den Server neu zu starten, aber es werden keine Änderungen angezeigt ...

Wie kann ich das beheben ... Habe ich etwas falsch gemacht?

Danke im Voraus!

120
Shalin Shah

Beachten Sie zunächst, dass für .htaccess-Dateien kein Neustart von httpd erforderlich ist. .htaccess-Dateien sind speziell für Benutzer gedacht, die keinen Root-Zugriff haben, dh keinen Zugriff auf die httpd-Serverkonfigurationsdatei haben und den Server nicht neu starten können. Da Sie den Server neu starten können, benötigen Sie keine .htaccess-Dateien und können die Konfiguration des Hauptservers direkt verwenden.

Zweitens müssen Sie überprüfen, ob AllowOverride richtig eingestellt ist, wenn .htaccess-Dateien ignoriert werden. Siehe http://httpd.Apache.org/docs/2.4/mod/core.html#allowoverride für Details. Sie müssen auch sicherstellen, dass es im richtigen Bereich festgelegt ist - dh im richtigen Block in Ihrer Konfiguration. Stellen Sie sicher, dass Sie [~ # ~] nicht [~ # ~] den Block bearbeiten, zum Beispiel.

Drittens, wenn Sie sicherstellen möchten, dass eine .htaccess-Datei tatsächlich gelesen wird, legen Sie Müll hinein. Eine ungültige Zeile wie "INVALID LINE HERE" in Ihrer .htaccess-Datei führt zu einem 500-Server-Fehler, wenn Sie Ihren Browser auf das Verzeichnis verweisen, das diese Datei enthält. Ist dies nicht der Fall, ist AllowOverride nicht ordnungsgemäß konfiguriert.

260
Rich Bowen
  1. Aktivieren Sie das Apache-Modul mod_rewrite

    a2enmod rewrite

  2. füge den folgenden Code zu /etc/Apache2/sites-available/default hinzu

    AllowOverride All

  3. Starten Sie Apache neu

    /etc/init.d/Apache2 restart

103

Wenn Sie alle oben genannten Punkte ausprobiert haben, bei denen es sich um gültige und gute Antworten handelt und Ihre htaccess-Datei nicht funktioniert oder gelesen wird, ändern Sie die Anweisung in Apache2.conf Datei. Unter Ubuntu lautet der Pfad /etc/Apache2/Apache2.conf

Ändere das <Directory> Anweisung, die auf Ihre öffentlichen Webseiten verweist, auf denen sich die htaccess-Datei befindet. Wechsel von AllowOverride None bis AllowOverride All

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

Ich hatte das gleiche Problem und fand die Antwort und Erklärung auf der Ubuntu Ask! forum https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working

38
user1946891

Zum Ubuntu,
Führen Sie zuerst diesen Befehl aus: -

Sudo a2enmod rewrite

Bearbeiten Sie dann die Datei /etc/Apache2/sites-available/000-default.conf Mit nano oder vim mit dem folgenden Befehl:

Sudo nano /etc/Apache2/sites-available/000-default.conf

Fügen Sie dies dann in der Datei 000-default.conf Nach der Zeile DocumentRoot /var/www/html Ein. Wenn es sich bei Ihrem HTML-Stammverzeichnis um ein anderes Verzeichnis handelt, schreiben Sie Folgendes:

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

Nachdem Sie alles getan haben, starten Sie Apache mit dem Befehl Sudo service Apache2 restart Neu.

18
khandelwaldeval

Folgen Sie einfach 3 Schritten

  1. Aktivieren Sie mode_rewrite mit dem folgenden Befehl

    Sudo a2enmod umschreiben

Passwort wird abgefragt. Also gib dein Passwort ein

  1. Aktualisieren Sie Ihre 0-default.conf oder default.conf Datei unter /etc/Apache2/sites-available/ Verzeichnis. Sie können es nicht direkt bearbeiten. Verwenden Sie zum Öffnen den folgenden Befehl

    Sudo gedit /etc/Apache2/sites-available/000-default.conf

Oder Sudo gedit /etc/Apache2/sites-available/default.conf

sie erhalten

DocumentRoot/var/www/html

OR

DocumentRoot/var/www

linie. Fügen Sie folgenden Code hinzu.

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

Legen Sie für den Benutzer fest, dass der Verzeichnis-Tag-Pfad mit dem in Ihrer Datei angegebenen übereinstimmt.

  1. Starten Sie Ihren Apache-Server mit dem folgenden Befehl neu

    Sudo-Dienst Apache2 neu starten

5

Höchstwahrscheinlich ist AllowOverride auf None gesetzt. im Verzeichnisabschnitt der Apache2.conf im Ordner/etc/Apache2

Setzen Sie es auf AllowOverride All

5
KawaiKx

Nach meiner Erfahrung verhindert die/var/www/directory-Direktive Anweisungen von virtualhost für Unterordner. Wenn Sie also alle Vorschläge ausprobiert haben und immer noch nicht funktionieren und virtualhosts verwenden, versuchen Sie dies.

1 - Stellen Sie sicher, dass Sie die Direktive AllowOverride All In /etc/Apache2/sites-available/example.com.conf Haben

2 - Überprüfen Sie die/var/www/Directory-Anweisungen in /etc/Apache2/Apache2.conf (Möglicherweise in Zeile 164).

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

Wenn es eine Direktive AllowOverride None Gibt, ändern Sie diese in AllowOverride All Oder setzen Sie einfach ein Escape-Zeichen

4

Standardmäßig verbietet Apache die Verwendung einer .htaccess-Datei, um Umschreibregeln anzuwenden

Schritt 1 - Aktivieren von mod_rewrite (falls nicht aktiviert) Zuerst müssen wir mod_rewrite aktivieren. Es ist verfügbar, aber bei einer sauberen Apache 2-Installation nicht aktiviert.

$ Sudo a2enmod rewrite

Dadurch wird das Modul aktiviert oder Sie werden benachrichtigt, dass das Modul bereits aktiviert ist. Starten Sie Apache neu, damit diese Änderungen wirksam werden.

$ Sudo systemctl restart Apache2

mod_rewrite ist jetzt vollständig aktiviert. Im nächsten Schritt richten wir eine .htaccess-Datei ein, mit der wir Umschreibregeln für Umleitungen definieren.

Schritt 2 - Einrichten von .htaccess Öffnen Sie die Standard-Apache-Konfigurationsdatei mit nano oder Ihrem bevorzugten Texteditor.

$ Sudo nano /etc/Apache2/sites-available/000-default.conf

In dieser Datei finden Sie einen Block, der in der ersten Zeile beginnt. Fügen Sie in diesem Block den folgenden neuen Block hinzu, damit Ihre Konfigurationsdatei wie folgt aussieht. Stellen Sie sicher, dass alle Blöcke richtig eingerückt sind.

/etc/Apache2/sites-available/000-default.conf

<VirtualHost *:80>
    <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    . . . 
</VirtualHost>

Speichern und schließen Sie die Datei. Starten Sie Apache neu, damit diese Änderungen wirksam werden.

$ Sudo systemctl restart Apache2

Getan. Deine .htacess sollte funktionieren. Dieser Link kann tatsächlich jemandem helfen https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls- with-mod_rewrite-for-Apache-on-Ubuntu-16-04

2
Abayomi Israel

Ich habe diese Verwendung gelöscht. Über diese Seite hier klicken

1
Raghul Shree

Öffnen Sie in WampServer das WampServer Tray-Symbol ----> Apache ---> Apache Modules ---> rewrite_module

1
Burusothman

verwenden Sie RewriteBase/{Ihr Ordner}/für Ihren .htaccess

0