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 eine .htaccess
Datei in meinem Dokumentstamm hinzugefügt /var/www/html
.
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 keine Änderungen angezeigt ...
Wie kann ich das beheben ... Habe ich etwas falsch gemacht?
Danke im Voraus!
apache
.htaccess
amazon-ec2
amazon-web-services
apache-config
Shalin Shah
quelle
quelle
400 Bad Request
Fehler wirklich zuordnen/var/www/html/404.php
?Antworten:
Beachten Sie zunächst, dass ein Neustart von httpd für .htaccess-Dateien nicht erforderlich ist. .htaccess-Dateien sind speziell für Personen gedacht, die kein Root-Verzeichnis haben, dh keinen Zugriff auf die Konfigurationsdatei des httpd-Servers 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 Hauptserverkonfiguration direkt verwenden.
Zweitens, wenn .htaccess-Dateien ignoriert werden, müssen Sie überprüfen, ob AllowOverride richtig eingestellt ist. Weitere Informationen finden Sie unter http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride . Sie müssen auch sicherstellen, dass es im richtigen Bereich eingestellt ist - dh im richtigen Block in Ihrer Konfiguration. Stellen Sie beispielsweise sicher, dass Sie die im Block NICHT bearbeiten.
Drittens, wenn Sie sicherstellen möchten, dass eine .htaccess-Datei tatsächlich gelesen wird, legen Sie Müll hinein. Eine ungültige Zeile wie "UNGÜLTIGE LINIE HIER" in Ihrer .htaccess-Datei führt zu einem 500-Server-Fehler, wenn Sie Ihren Browser auf das Verzeichnis richten, das diese Datei enthält. Wenn dies nicht der Fall ist, ist AllowOverride nicht richtig konfiguriert.
quelle
"A STRING"
in meinen .htaccess geputtet , damit ich einen Fehler erhalte, also habe ichAllowOverride All
allesapache2.conf
in mein Debian geputtet und es funktioniertAllowOverride
nur in<Directory>
Direktiven funktioniert und ignoriert wird, wenn es in einem<Location ...>
Abschnitt platziert wird. Siehe: httpd.apache.org/docs/2.4/mod/core.html#allowoverride<Directory>
Direktive einen absoluten Pfad anstelle eines relativen Pfads erwartet. In meinem Fall während der Arbeit<Directory />
fehlgeschlagen<Directory /var/www/html/subdir>
.Aktivieren Sie das Apache mod_rewrite-Modul
a2enmod rewrite
Fügen Sie den folgenden Code hinzu
/etc/apache2/sites-available/default
AllowOverride All
Starten Sie Apache neu
/etc/init.d/apache2 restart
quelle
Wenn Sie alle oben genannten Punkte ausprobiert haben, die alle gültige und gute Antworten sind, und Ihre htaccess-Datei nicht funktioniert oder gelesen wird, ändern Sie die Anweisung in der
apache2.conf
Datei. Unter Ubuntu ist der Pfad/etc/apache2/apache2.conf
Ändern Sie die
<Directory>
Anweisung, die auf Ihre öffentlichen Webseiten verweist, auf denen sich die htaccess-Datei befindet. Wechseln Sie vonAllowOverride None
zuAllowOverride All
Ich hatte das gleiche Problem und fand die Antwort und Erklärung auf der Ubuntu Ask! Forum /ubuntu/421233/enabling-htaccess-file-to-rewrite-path-not-working
quelle
AllowOverride FileInfo
in der 3. Zeile erforderlich, damit die.htaccess
Datei gelesen und verwendet werden kann.All
Aktiviert auch zusätzliche Konfigurationsüberschreibungen, z. B..httpasswd
(die einzeln aktiviert werden können, indemAuthconfig
anstelle von verwendet wirdAll
).Führen Sie für Ubuntu zunächst den folgenden
Befehl aus:
Bearbeiten Sie dann die Datei
/etc/apache2/sites-available/000-default.conf
mit nano oder vim mit folgendem Befehl: -000-default.conf
Fügen Sie dies dann in der Datei nach der Zeile hinzuDocumentRoot /var/www/html
. Wenn Ihr HTML-Stammverzeichnis etwas anderes ist, schreiben Sie Folgendes: -Nachdem Sie alles getan haben, starten Sie Apache mit dem Befehl neu
sudo service apache2 restart
quelle
Folgen Sie einfach 3 Schritten
Aktivieren Sie mode_rewrite mit dem folgenden Befehl
sudo a2enmod umschreiben
Passwort wird abgefragt. Geben Sie also Ihr Passwort ein
Aktualisieren Sie Ihre Datei 000-default.conf oder default.conf im Verzeichnis / etc / apache2 / sites-available / . 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
ODER
Linie. Fügen Sie danach den folgenden Code hinzu.
Stellen Sie dem Benutzer sicher, dass der Verzeichnis-Tag-Pfad mit dem in Ihrer Datei angegebenen übereinstimmt.
Starten Sie Ihren Apache-Server mit dem folgenden Befehl neu
sudo service apache2 neu starten
quelle
Höchstwahrscheinlich ist AllowOverride auf None eingestellt. im Verzeichnisbereich der Datei apache2.conf im Ordner / etc / apache2
Versuchen Sie es auf AllowOverride All
quelle
Nach meiner Erfahrung verhindert die Verzeichnisverzeichnis / var / www / die Direktive virtualhost. Wenn Sie also alle Vorschläge ausprobiert haben und immer noch nicht funktionieren und virtuelle Hosts verwenden, versuchen Sie dies.
1 - Stellen Sie sicher, dass Sie
AllowOverride All
Direktive in haben/etc/apache2/sites-available/example.com.conf
2 - Überprüfen Sie die Direktiven / var / www / Directory in
/etc/apache2/apache2.conf
(möglicherweise in Zeile 164), wie es aussieht.Wenn es eine
AllowOverride None
Direktive gibt, ändern Sie sie inAllowOverride All
oder einfach in die Escape-Zeilequelle
Standardmäßig verbietet Apache die Verwendung einer .htaccess-Datei zum Anwenden von Umschreiberegeln
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.
Dadurch wird das Modul aktiviert oder Sie werden darauf hingewiesen, dass das Modul bereits aktiviert ist. Starten Sie Apache neu, um diese Änderungen zu übernehmen.
mod_rewrite ist jetzt vollständig aktiviert. Im nächsten Schritt richten wir eine .htaccess-Datei ein, mit der wir Umschreiberegeln für Weiterleitungen definieren.
Schritt 2 - Einrichten von .htaccess Öffnen Sie die Standard-Apache-Konfigurationsdatei mit nano oder Ihrem bevorzugten Texteditor.
In dieser Datei finden Sie einen Block, der in der ersten Zeile beginnt. Fügen Sie innerhalb dieses Blocks 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
Speichern und schließen Sie die Datei. Starten Sie Apache neu, um diese Änderungen zu übernehmen.
Getan. Ihre .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
quelle
$ sudo httpd -k restart
(Red Hat 4.4.7-23)Ich habe diese Verwendung freigegeben. Wenn Sie diese Site verwenden, klicken Sie hier . Befolgen Sie die Schritte, die bis zur Ubuntu-Version 18.04 ausgeführt werden
quelle
Im
WampServer
Open WampServer Tray-Symbol ----> Apache ---> Apache-Module ---> rewrite_modulequelle
Verwenden Sie RewriteBase / {Ihr Ordner} / für Ihren .htaccess
quelle
Der Vollständigkeit halber können Sie dieses Problem debuggen, wenn "AllowOverride All" Ihr Problem nicht behebt:
Führen Sie aus
apachectl -S
und prüfen Sie, ob Sie mehr als einen Namen haben. Möglicherweise sucht httpd nach .htaccess eines anderen DocumentRoot.Verwenden Sie
strace -f apachectl -X
und suchen Sie, wo es geladen wird (oder nicht) .htaccess from.quelle