Я пытаюсь использовать файл .htaccess для настройки определенного поведения для одного каталога.
Мой .htaccess выглядит следующим образом:
ErrorDocument 401 /var/www/secret/logging.php
AuthName "My Password Protected Site"
AuthUserFile /var/www/secret/.htpasswd
AuthType Basic
Require valid-user
# Set REMOTE_USER env variable on 401 ErrorDocument
RewriteEngine On
RewriteBase /secret/
RewriteCond %{ENV:REDIRECT_STATUS} ^401$
RewriteRule .* - [E=REMOTE_USER:%{ENV:REDIRECT_REMOTE_USER}]
Однако при попытке проверить это на странице ошибки Apache по умолчанию указано ошибка 404 была обнаружена при попытке использовать ErrorDocument для обработки запроса. Все разрешения верны, все пути к файлам верны.
Что я делаю не так?
Если вы хотите перенаправить на внешний URL-адрес для решения проблемы / ошибки
как документация https://httpd.apache.org/docs/2.2/en/mod/core.html#errordocument
Вы должны установить URL:
ErrorDocument 401 /secret/logging.php
иначе перенаправление ошибки будет пытаться перейти на http: // {yourSite} /var/www/secret/logging.php
, который не существует, и вызывает ошибку 404 not found
Проблема в том, что вы используете абсолютный путь в errordocument path. Это не работает, путь интерпретируется как находящийся внутри вашего DocumentRoot
см. https://stackoverflow.com/questions/3311411/apache-errordocument-with-absolute-path для лотов дополнительная информация и временное решение.