我已取消注释默认部分:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
然后重新启动 apache ('语法 OK')
当我运行时,links http://127.0.0.1/server-status
我看到 404 错误页面。
# apachectl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443 site.com (/etc/httpd/conf.d/ssl.conf:74)
*:80 is a NameVirtualHost
default server site.com (/etc/httpd/sites-enabled/www.site.com.conf:1)
port 80 namevhost site.com (/etc/httpd/sites-enabled/www.site.com.conf:1)
alias www.site.com
Syntax OK
我也尝试插入'Location'
块<VirtualHost>
并使用域名,但127.0.0.1
没有成功。
我通过故意输入不正确的指令检查了我是否位于正确的配置文件,这是正确的文件。
我究竟做错了什么?
答案1
我遇到了同样的问题,而且原因似乎也类似:我的应用程序有一个 .htaccess 文件,内容如下:
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ index.php [NC,L]
这优先于 Location 部分。它重写所有不指向实际文件的 URL,其中包括服务器状态。通过在 RewriteRule 之前添加另一个 RewriteCond,我能够修复它:
RewriteCond %{REQUEST_URI} !=/server-status
另一种方法是添加一个别名,将服务器状态 URL 映射到另一个目录,该目录不使用 .htaccess 文件。这似乎甚至可以是一个不存在的目录:
Alias /server-status /tmp/dummy
从 httpd 2.2 更新到 2.4 时,我还必须授予对此虚拟目录的访问权限:
<Directory /tmp/dummy>
Require all granted
</Directory>