<Location /status> SetHandler server-status order deny,allow allow from all </Location>
但是当我访问http://ip:port/status ,
404 Not Found被报告,为什么?
当文档根目录中有一个.htaccess文件,并且该文件包含一个RewriteRule ,也可能发生这种情况,这与CMS漂亮的URL很常见。 <Location>指令首先执行,但在此阶段不调用处理程序。 那么RewriteRule设置一个处理程序,例如一个PHP脚本,所以SetHandler什么都不做。
如果是这种情况,find导致问题的RewriteRule ,并添加它之前:
RewriteCond %{REQUEST_URI} !=/server-status
(Apache 2.2.22)
附录:还要注意,如果DocumentRoot根本就不能被apache进程读取,你可以得到一个403,因为服务器状态处理程序没有机会工作。
附录2:如果Apache默认站点的.htaccess经常被覆盖,并且/server-status URL对于例如Munin工作是必要的,那么创build包括服务器状态处理程序的<VirtualHost 127.0.0.1:80>节在行政上最简单。
因为你错误地configuration了一些东西。 你的日志对404的起因有什么看法? 我的第一个猜测是, ip:port不是一个有效的虚拟主机(或者至less对于你已经把<Location /status>放进去的虚拟主机无效),它可能会退回到默认的虚拟主机。 错误日志将提到你没有configuration的非理性path,如果是这样的话。 其他错误日志消息将意味着不同的事情,这就是为什么检查它们如此重要。
我的猜测是你没有加载状态模块 – 你能确认吗?
该文档是:
<Location /server-status> SetHandler server-status Order Deny,Allow Deny from all </Locaton>
你的位置不同,我不认为这应该很重要,但尝试你的位置/服务器状态,而不是只是/状态。
不过 – 我认为Spud是对的。 你还没有加载该模块。
-Sean
如果您正在使用WampServer ,请按照以下步骤进行操作:
位于wamp\bin\apache\apache[version]\conf\extra的httpd-info.conf文件包含相关的<Location>configuration:
<Location /server-status> SetHandler server-status #Require host .example.com #Require ip 127 </Location>
这个文件实际上可能包含或不包含在你的Apacheconfiguration中。 在httpd.conf文件中查找以下行,并确保它未被注释:
Include conf/extra/httpd-info.conf
在我的情况下,主要的问题是后者:行被默认注释,因此httpd-info.conf甚至没有加载。
如果您使用的是mod_rewrite和vhostconfiguration,则需要在vhostconfiguration文件的顶部添加一个空白的vhost条目,例如
<VirtualHost *:80> </VirtualHost>
然后你可以通过服务器IP地址访问它,例如ip_address / server-status