Назад | Перейти на главную страницу

Apache ErrorLog: невозможно использовать полный URL-адрес в директиве 401 ErrorDocument - игнорирование

Я использую файл .htaccess на своем Apache для отображения настраиваемых документов об ошибках. Все это тоже отлично работает.

Но я все еще вижу много этой ошибки в журнале:

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

Строка 6 моего .htacess смотрит прямо вперед:

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

Почему нельзя использовать полный URL-адрес в директиве 401 ErrorDocument? Ошибка или особенность?

Вы можете использовать только локальный URL-путь в ответ на код 401. Это потому, что

когда вы указываете ErrorDocument, который указывает на удаленный URL-адрес (т.е. что-либо с таким методом, как http, перед ним), HTTP-сервер Apache отправит перенаправление клиенту, чтобы сообщить ему, где найти документ, даже если документ оказывается на том же сервере. Это имеет несколько последствий, наиболее важным из которых является то, что клиент не получит исходный код состояния ошибки, а вместо этого получит код состояния перенаправления. Это, в свою очередь, может сбивать с толку веб-роботов и других клиентов, которые пытаются определить, действителен ли URL, используя код состояния. Кроме того, если вы используете удаленный URL-адрес в ErrorDocument 401, клиент не будет знать, что нужно запрашивать у пользователя пароль, поскольку он не получит код состояния 401. Следовательно, если вы используете директиву ErrorDocument 401, она должна ссылаться на локальный документ.