Apache2 for 401中的自定义错误页面

时间:2010-12-02 23:58:28

标签: apache apache2 custom-error-pages

这是.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 root设置为/ var / www / mywebsite / web,它位于许多虚拟主机上。我可以导航到index.html页面。

我所看到的只是通用的Apache 401页面,任何想法。

编辑:这是我浏览器中的错误消息:

  

需要授权

     

此服务器无法验证您   有权访问该文档   请求。要么你提供了   错误的凭证(例如,错误   密码),或者您的浏览器没有   了解如何供应   需要凭证。

     

此外,还有401授权   遇到所需的错误   试图使用ErrorDocument   处理请求。阿帕奇/ 2.2.9   (Debian)PHP / 5.2.6-1 + lenny8用   位于www.dirbe.com的Suhosin-Patch Server   80号港口

3 个答案:

答案 0 :(得分:7)

确保apache用户可以读取/ var / www / errors并将其包含在您的apache配置中:

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

答案 1 :(得分:3)

这个问题(以及答案和评论)对我帮助很大,非常感谢!

我解决了一种略有不同的方式,并希望分享。在这种情况下,我们需要提供自定义401错误文档以及代理到后端应用程序所需的根路径。

因此,例如,http://example.com需要提供来自http://internal-server:8080/的内容。此外,http://example.com需要使用Basic Auth和自定义401错误文档进行保护。

因此,我在DocumentRoot中创建了一个名为“error”的目录。这是来自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/

答案 2 :(得分:0)

ErrorDocument接受绝对URL路径而不是文件路径。所以它应该是:

ErrorDocument 404 /error/error.html

假设您的文档根目录下是/error/error.html文件。