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 页面,有什么想法吗?
编辑:这是我的浏览器中的错误消息:
需要授权
此服务器无法验证您是否 被授权访问该文档 要求。您要么提供了 错误的凭据(例如,错误的 密码),或者您的浏览器没有 了解如何供应 需要凭据。
此外,还有 401 授权 遇到所需的错误 尝试使用 ErrorDocument 来 处理请求。阿帕奇/2.2.9 (Debian) PHP/5.2.6-1+lenny8 与 Suhosin-补丁服务器位于 www.dirbe.com 端口80
Here's the relevant part of the .htaccess file:
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 is set to /var/www/mywebsite/web, it's on of many vhosts. I can navigate to the index.html page.
All I'm seeing is the generic Apache 401 page, any thoughts.
EDIT: This is the error message in my browser:
Authorization Required
This server could not verify that you
are authorized to access the document
requested. Either you supplied the
wrong credentials (e.g., bad
password), or your browser doesn't
understand how to supply the
credentials required.Additionally, a 401 Authorization
Required error was encountered while
trying to use an ErrorDocument to
handle the request. Apache/2.2.9
(Debian) PHP/5.2.6-1+lenny8 with
Suhosin-Patch Server at www.dirbe.com
Port 80
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
确保 apache 用户可以读取 /var/www/errors 并将其包含在您的 apache 配置中:
Make sure that /var/www/errors is readable by the apache user and include this in your apache configuration:
ErrorDocument 采用绝对 URL 路径而不是文件路径。所以应该是:
假设您的文档根目录下有一个 /error/error.html 文件。
ErrorDocument takes in a absolute URL path instead of a file path. So it should be:
Assuming under your document root is a /error/error.html file.
这个问题(以及答案和评论)对我很有帮助,非常感谢!
我解决了一个稍微不同的方法,并想分享。在这种情况下,我们需要提供自定义 401 错误文档,并且需要代理到后端应用程序的根路径。
因此,例如,http://example.com 需要提供来自 http://internal-server:8080/。此外,http://example.com 需要使用带有自定义 401 错误文档的基本身份验证进行保护。
因此,我在 DocumentRoot 中创建了一个名为“error”的目录。以下是虚拟主机中的相关行:
This question (and answers and comments) helped me a bunch, thanks much!
I solved a slightly different way, and wanted to share. In this case, we needed to provide a custom 401 error document and the root path needed to be proxied to a backend app.
So, for example, http://example.com needed to serve content from http://internal-server:8080/. Also, http://example.com needed to be protected using Basic Auth with a custom 401 error document.
So, I created a directory named "error" in the DocumentRoot. Here's the relevant lines from the vhost: