Пользовательская страница ошибки в Apache2 для 401

Вот соответствующая часть файла.htaccess:

AuthUserFile  /var/www/mywebsite/.htpasswd
AuthGroupFile /dev/null
AuthName  protected
AuthType Basic
Require valid-user

ErrorDocument 400 /var/www/errors/index.html
ErrorDocument 401 /var/www/errors/index.html
ErrorDocument 403 /var/www/errors/index.html
ErrorDocument 404 /var/www/errors/index.html
ErrorDocument 500 /var/www/errors/index.html

Корень документа установлен в /var/www/mywebsite/web, это один из многих вариантов. Я могу перейти на страницу index.html.

Все, что я вижу, это общая страница Apache 401, любые мысли.

РЕДАКТИРОВАТЬ: Это сообщение об ошибке в моем браузере:

Требуется Авторизация

Этот сервер не может подтвердить, что вы авторизованы для доступа к запрашиваемому документу. Либо вы ввели неверные учетные данные (например, неверный пароль), либо ваш браузер не понимает, как предоставить необходимые учетные данные.

Кроме того, при попытке использовать ErrorDocument для обработки запроса произошла ошибка 401 Authorization Required. Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny8 с сервером Suhosin-Patch по адресу www.dirbe.com Порт 80

3 ответа

Решение

Убедитесь, что / ap /www/errors доступен для чтения пользователю apache и включите его в свою конфигурацию apache:

<Directory /var/www/errors>
  Order allow,deny
  Allow from all
</Directory>

ErrorDocument принимает абсолютный путь URL вместо пути к файлу. Так и должно быть:

ErrorDocument 404 /error/error.html

Предполагается, что в корне вашего документа находится файл /error/error.html.

Этот вопрос (и ответы и комментарии) очень помог мне, большое спасибо!

Я решил немного по-другому, и хотел поделиться. В этом случае нам нужно было предоставить пользовательский документ об ошибке 401, а корневой путь необходимо было проксировать в бэкэнд-приложение.

Так, например, http://example.com/ нужно было обслуживать контент с http://internal-server:8080/. Кроме того, http://example.com/ необходимо было защитить с помощью Basic Auth с пользовательским документом об ошибке 401.

Итак, я создал каталог с именем "error" в DocumentRoot. Вот соответствующие строки из vhost:

    ErrorDocument 401 /error/error401.html

    # Grant access to html files under /error
<Location "/error">
Options -Indexes
Order Deny,Allow
Allow from all
</Location>

    # restrict proxy using basic auth
<Proxy *>
Require valid-user
AuthType basic
AuthName "Basic Auth"
AuthUserFile /etc/apache2/.htpasswd
</Proxy>

    # Proxy everything except for /error
ProxyRequests Off
ProxyPass /error !
ProxyPass / http://internal:8080/
ProxyPassReverse / http://internal:8080/
Другие вопросы по тегам