在 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.conf
Debian 上的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 失败)的主要内容,如果未能解决你的问题,请参考以下文章
VirtualHost 阻止 XAMPP 声明启动 Apache