Apache ErrorLog: Kann keine vollständige URL in einer 401 ErrorDocument-Direktive verwenden - ignoriert

Aug 13 2020

Ich verwende die .htaccess-Datei auf meinem Apache, um benutzerdefinierte Fehlerdokumente anzuzeigen. Das alles funktioniert auch gut.

Aber ich sehe immer noch viele dieser Fehler im Protokoll:

[Thu Aug 13 10:38:31 2020] [notice] [client AH00113: /home/www/.htaccess:6 cannot use a full URL in a 401 ErrorDocument directive --- ignoring!

Zeile 6 meiner .htacess sieht direkt aus:

ErrorDocument 401 http://error.foo.bar/401.html

Warum kann keine vollständige URL in einer 401 ErrorDocument-Direktive verwendet werden? Fehler oder Funktion?

Antworten

1 Lacek Aug 13 2020 at 17:07

Sie können nur den lokalen URL-Pfad als Antwort auf Code 401 verwenden. Dies liegt daran

Wenn Sie ein ErrorDocument angeben, das auf eine Remote-URL verweist (dh auf etwas mit einer Methode wie http davor), sendet Apache HTTP Server eine Umleitung an den Client, um ihm mitzuteilen, wo sich das Dokument befindet, auch wenn das Dokument vorhanden ist endet auf dem gleichen Server. Dies hat mehrere Auswirkungen. Das Wichtigste ist, dass der Client nicht den ursprünglichen Fehlerstatuscode erhält, sondern stattdessen einen Umleitungsstatuscode. Dies kann wiederum Webroboter und andere Clients verwirren, die versuchen, anhand des Statuscodes festzustellen, ob eine URL gültig ist. Wenn Sie eine Remote-URL in einem ErrorDocument 401 verwenden, kann der Client den Benutzer nicht zur Eingabe eines Kennworts auffordern, da er den 401-Statuscode nicht erhält. Deshalb , wenn Sie eine Anweisung Errordocument 401 verwenden, dann muss es zu einem lokalen Dokument verweisen.