我想在我运行 Apache/2.4.6 的 Windows 10 开发框中为自己启用mod_status 。我使用基于名称的虚拟主机,并且我有一个指向“站点不存在”页面的默认主机:
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:/Sites/Default/htdocs"
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
<Directory "C:/Sites/Default/htdocs">
Require all granted
AllowOverride All
Options -Indexes
</Directory>
</VirtualHost>
我加载了所有必需的模块(mod_authz_core、mod_authz_host、mod_info 和 mod_status),但我的Require
指令都不起作用:
<Location /server-status>
SetHandler server-status
# AH01753: access check of 'localhost' to /server-info failed, reason: unable to get the remote host name
#Require host localhost
# AH01630: client denied by server configuration
Require ip 127.0.0.1
# ... but this:
Require all granted
</Location>
即使允许所有人免费访问,index.php
由于我的默认主机中有这个,我得到了我的默认页面:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我有两个问题:
Require
触发 AH01753 和 AH01630的指令是否有问题?应该
RewriteRule
绕过?SetHandler server-status
/server-status 不是文件或目录,因此如果您坚持使用 mod_rewrite 至少为此 URI 添加一个条件,否则该行为是正常的。
顺便说一句,如果你去过:
你现在不会有这个问题。这是另一个在不需要时使用 mod_rewrite 的例子,会造成混乱。