Пользовательская страница ошибки в 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

корень Docuement установлен в /var/www/mywebsite / web, он находится на многих vhosts. Я могу перейти к указателю.HTML-страница.

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

EDIT: это сообщение об ошибке в моем браузере:

Авторизация

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

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

3 ответов


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

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

этот вопрос (и ответы и комментарии) помог мне букетик, спасибо!

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

Так, например, http://example.com нужно размещать контент http://internal-server:8080/. Кроме того,http://example.com необходимо быть защищенным используя основное 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/

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

ErrorDocument 404 /error/error.html

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