我正在尝试让 Munin 的各种 Apachie 插件在我的 Web 服务器上运行,但遇到了问题。当我要求 Munin 检查可用的插件时,三个 Apache 插件中的两个返回错误,提示
无法找到 apache 服务器状态
我已经mod_status
打开等等,据我所知,一切都设置正确。
我尝试localhost/server-status
使用打开Lynx
,此时出现 404 错误,并显示我的 Wordpress 错误页面(当您尝试访问不存在的页面时出现的页面)。
现在,这可能与我如何让 Apache 为 Wordpress 安装提供服务等有关。该网站位于 中/var/www/wordpress
,index.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]