Apache ErrorLog: no se puede usar una URL completa en una directiva ErrorDocument 401 - ignorando

Aug 13 2020

Utilizo el archivo .htaccess en mi Apache para mostrar documentos de error personalizados. Todo esto también funciona bien.

Pero todavía veo muchos de estos errores en el registro:

[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!

La línea 6 de mi .htacess parece sencilla:

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

¿Por qué no se puede utilizar una URL completa en una directiva ErrorDocument 401? ¿Error o característica?

Respuestas

1 Lacek Aug 13 2020 at 17:07

Puede usar solo la ruta URL local en respuesta al código 401. Es porque

cuando especifica un ErrorDocument que apunta a una URL remota (es decir, cualquier cosa con un método como http delante), Apache HTTP Server enviará una redirección al cliente para indicarle dónde encontrar el documento, incluso si el documento termina estando en el mismo servidor. Esto tiene varias implicaciones, la más importante es que el cliente no recibirá el código de estado de error original, sino que recibirá un código de estado de redireccionamiento. Esto, a su vez, puede confundir a los robots web y a otros clientes que intentan determinar si una URL es válida utilizando el código de estado. Además, si usa una URL remota en un ErrorDocument 401, el cliente no sabrá que debe solicitar al usuario una contraseña, ya que no recibirá el código de estado 401. Por lo tanto, si utiliza una directiva ErrorDocument 401, debe hacer referencia a un documento local.