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.