Apache抛出未经授权的401
这是我的Apache抛出未经授权的401,apache,location,virtualhost,unauthorized,errordocument,Apache,Location,Virtualhost,Unauthorized,Errordocument,这是我的VirtualHost配置: <VirtualHost *:80> ServerName example.com DocumentRoot /var/www/example.com/public <Directory /var/www/example.com/public> Options +FollowSymLinks AllowOverride All
VirtualHost
配置:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example.com/public
<Directory /var/www/example.com/public>
Options +FollowSymLinks
AllowOverride All
Require user user1 user2
</Directory>
<Location /error/401>
Require all granted
</Location>
ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
ErrorDocument 500 /error/500
ErrorDocument 404 /error/404
ErrorDocument 401 /error/401
</VirtualHost>
我做错了什么?根据下面链接的文档,位置
应该在目录
之后处理,因此这应该可以工作
编辑:
很明显,这是有问题的部分:
Additionally, a 401 Unauthorized error was encountered while trying to use an ErrorDocument to handle the request.
我遇到了一个非常类似的问题。关键的实际问题是,如果站点的DocumentRoot级别的身份验证失败,则无法访问位于DocumentRoot(即/error/401)下面的自定义错误页,因此会发出默认的Apache错误消息 我采用的解决方案是将html合并到ErrorDocument401指令中。例如
错误文档401“在此处插入标记”
(注意标记周围的引号是必不可少的)
当然,这是一个很好的解决办法。也许我不明白问题出在哪里,但Apache似乎工作正常。“当我故意不通过身份验证时”应带您进入401页,当您尝试浏览到“/error/401”时,也应带您进入401页。那么,当您输入一个有效的用户名和密码时,它会起作用吗?这是有问题的部分:“另外,在尝试使用ErrorDocument处理请求时遇到了401未经授权的错误。”您使用的是什么版本的Apache?Apache2.2和2.4在访问控制方面有一些不同:我使用的是2.4。您可以在我的配置中看到,我正在使用
要求所有已授予的权限
。我认为这在2.2中甚至都不是有效的语法,所以我认为我根本无法用它来启动2.2。
Additionally, a 401 Unauthorized error was encountered while trying to use an ErrorDocument to handle the request.