apache 忽略位置指令

apache 忽略位置指令

我已取消注释默认部分:

<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>

相关内容