Apache 服务器状态返回 404,然后重定向到我的 Wordpress 安装

Apache 服务器状态返回 404,然后重定向到我的 Wordpress 安装

我正在尝试让 Munin 的各种 Apachie 插件在我的 Web 服务器上运行,但遇到了问题。当我要求 Munin 检查可用的插件时,三个 Apache 插件中的两个返回错误,提示

无法找到 apache 服务器状态

我已经mod_status打开等等,据我所知,一切都设置正确。

我尝试localhost/server-status使用打开Lynx,此时出现 404 错误,并显示我的 Wordpress 错误页面(当您尝试访问不存在的页面时出现的页面)。

现在,这可能与我如何让 Apache 为 Wordpress 安装提供服务等有关。该网站位于 中/var/www/wordpressindex.php文件位于上一级,并且 .htaccess 文件已根据 Wordpress 说明进行了修改。它工作正常,但我有一种不安的感觉,当 Munin/Lynx 尝试加载 localhost/server-status 时,它会在 中寻找它/var/www/

那么,我该如何告诉 Apache 在请求服务器状态时实际查看哪里?


这是我的 httpd.conf 文件。

ServerName localhost



<VirtualHost *:80>
ServerName oliverhaslam.com
ServerAlias oliverhaslam.com
DocumentRoot /var/www/wordpress/
</VirtualHost>


<VirtualHost *:80>
ServerName ojhaslam.co.uk
ServerAlias ojhaslam.co.uk
DocumentRoot /var/sites/photo365/
</VirtualHost>

<VirtualHost *:80>
ServerName www.ojhaslam.co.uk
ServerAlias www.ojhaslam.co.uk
RedirectMatch permanent /(.*) http://ojhaslam.co.uk/$1
DocumentRoot /var/sites/photo365/
</VirtualHost>

<Location /server-status>
        SetHandler server-status
        Order deny,allow
        Allow from  all
</Location>

如果我删除最后一部分,我会收到“禁止”错误而不是上面概述的错误。


看来问题出在我的.htaccess文件上。删除该文件意味着服务器状态正常,但显然 Wordpress 链接不起作用。以下是文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#Next two don't fix the issue.    
#RewriteCond %{REQUEST_URI} !=/server-status
#RewriteRule ^(server-info|server-status) - [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

答案1

Wordpress 的 .htaccess 文件将所有不存在的文件和目录发送给 Wordpress 进行处理。尝试排除服务器状态 URL。

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/server-status
RewriteRule . /index.php [L]

答案2

由于我得到了这篇文章的帮助,如果你也没有像我最初那样应用 becomewisest 的答案,你应该准确地提出条件

RewriteCond %{REQUEST_URI} !=/server-status

重写规则之前。

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} !=/server-status

RewriteRule . /index.php [L]

这就是为什么奥利弗·哈斯拉姆仍然有同样的麻烦,因为他把

RewriteCond %{REQUEST_URI} !=/server-status

高于其他条件。

希望这可以帮助其他人来到这里:)

答案3

接受的答案很好,但如果您想/server-status/?refresh=2每 N 秒自动更新一次,请将提供的行更改为:

RewriteCond %{REQUEST_URI} !^/server-status/?$ [NC]

相关内容