Пользовательская страница ошибки в Apache2 для 401 - PullRequest
10 голосов
/ 03 декабря 2010

Вот соответствующая часть файла .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 ]

7 голосов
/ 03 декабря 2010

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

<Directory /var/www/errors>
  Order allow,deny
  Allow from all
</Directory>
3 голосов
/ 30 августа 2011

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

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

Так, например, http://example.com необходим для обслуживания контента с http://internal -сервер: 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/
0 голосов
/ 19 февраля 2018

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

ErrorDocument 404 /error/error.html

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

...