it-swarm.com.de

Lassen Sie Apache 404 bei fehlender Seiten-URL anzeigen, anstatt zur Fehlerseiten-URL umzuleiten

Angenommen, non-existent-page.html existiert nicht, und der Benutzer versucht, auf diese Seite zuzugreifen, und hat einen 404-Fehler ausgelöst.

Kann ich die angeforderte Seiten-URL anzeigen:

http://www.example.com/non-existent-page.html

anstelle der Fehlerseiten-URL:

http://www.example.com/404.html

Lösung:

Als ich mir die Antwort von Stephen Ostermiller ansah, wusste ich, dass ich eine relative URL verwendete, aber ich stellte fest, dass am Ende ein abschließender Schrägstrich fehlte, weil ich auf ein Verzeichnis und nicht auf eine Seite zeigte. Dies tritt meistens bei einigen xSPs mit schlechten Konfigurationen auf.

Problem

ErrorDocument 404 /error/404  <-- no slash

Fix

ErrorDocument 404 /error/404/ <-- added slash
6
Explisam

Der Apache-Server kann so konfiguriert werden, dass die Fehlerseite unter der Fehler-URL angezeigt wird, oder er kann zur Fehlerseite umleiten. Es ist fast besser, die Fehlerseite direkt an der URL anzuzeigen, als sie umzuleiten.

Die Apache ErrorDocument Direktive erklärt, wie man es auf beide Arten implementiert:

URLs können mit einem Schrägstrich (/) für lokale Webpfade (relativ zum DocumentRoot) beginnen oder eine vollständige URL sein, die der Client auflösen kann.

In der Praxis bedeutet dies, dass bei Angabe des Fehlerdokuments als absolute URL eine Weiterleitung zur Fehlerseite erfolgt:

ErrorDocument 404 http://www.example.com/404.html

wenn Sie das Fehlerdokument jedoch als relative URL angeben, die mit einem Schrägstrich beginnt, wird das Fehlerdokument an der ursprünglichen URL angezeigt, an der der Fehler aufgetreten ist:

ErrorDocument 404 /404.html

Ich vermute, dass Sie Ihre ErrorDocument -Direktive als absolute URL konfiguriert haben, entweder in Ihrer . Htaccess -Datei oder in Ihrer httpd.conf Datei. Sie müssen es bearbeiten, um es in eine relative URL zu ändern.

4

Dazu müssen Sie die RewriteEngine verwenden und eine Bedingung/Regel hinzufügen, um zu erkennen, ob die HTTP-Anforderung mit der Erweiterung html endet, und dann auf dieselbe umleiten URL ohne URL in .htaccess:

RewriteEngine On
  RewriteCond %{THE_REQUEST} ^GET\ (.*)\.html\ HTTP
  RewriteRule (.*)\.html$ $1 [R=301]

Dadurch wird jede Anfrage mit der Endung .html an dieselbe URL ohne die Erweiterung umgeleitet. Wenn die Version non . Html vorhanden ist, z. B. beim Zugriff auf eine ungültige URL, wird die 404-Seite angezeigt.

Schauen Sie sich die RewriteRule-Direktive an hier

1
marcanuy