在 Apache VirtualHost 配置中“要求全部授予”,但仍然是“您无权访问此服务器上的 /test”(RewriteRule 失败)

Posted

技术标签:

【中文标题】在 Apache VirtualHost 配置中“要求全部授予”,但仍然是“您无权访问此服务器上的 /test”(RewriteRule 失败)【英文标题】:"Require all granted" in Apache VirtualHost config but still "You don't have permission to access /test on this server" (RewriteRule fails) 【发布时间】:2018-12-23 03:32:09 【问题描述】:

这是/etc/apache2/sites-available/000-default.confDebian 上的Apache 2.4 配置文件的完整内容:

<VirtualHost *:80>
  ServerName 203.0.113.0
  DocumentRoot /home/www/203.0.113.0
  <Directory "/">
    Require all granted   # as required with Apache 2.4
  </Directory>
  RewriteEngine On
  RewriteRule ^/test(.*)$ /index.html [P,L]
</VirtualHost>

a2enmod rewrite 已被执行,因此mod_rewrite 已启用(由显示rewrite_module (shared)apachectl -t -D DUMP_MODULES 确认)

从浏览器访问http://203.0.113.0/ 有效,并成功显示文件/home/www/203.0.113.0/index.html

service apache2 restart已经被执行

问题:为什么访问http://203.0.113.0/test 显示:

禁止您无权访问此服务器上的 /test。 Apache/2.4.25 (Debian) 服务器在 ... 端口 80

【问题讨论】:

您提到访问http://203.0.113.0:1234 有效。 http://localhost:1234 呢?你正在代理http://localhost:1234,测试那个。是不是需要代理到http://203.0.113.0:1234 @Nic3500 与后者相同的错误,甚至与RewriteRule ^/test(.*)$ / [P,L] 相同的错误,奇怪! @Nic3500 查看编辑后的问题。 【参考方案1】:

终于

cat /var/log/apache2/error.log 

给出了解决方案:

AH00669:尝试在未启用代理的情况下从 mod_rewrite 发出远程请求

所以

a2enmod rewrite proxy proxy_http

解决了问题。

【讨论】:

以上是关于在 Apache VirtualHost 配置中“要求全部授予”,但仍然是“您无权访问此服务器上的 /test”(RewriteRule 失败)的主要内容,如果未能解决你的问题,请参考以下文章

Apache VirtualHost配置

VirtualHost 阻止 XAMPP 声明启动 Apache

Apache VirtualHost配置

是否可以在同一个 VirtualHost 下配置多个 Apache WSGIAlias'es?

apache虚拟主机配置

在 ssl VirtualHost 中设置 Apache mod_jk