Apache 伺服器狀態返回 404,然後重定向到我的 Wordpress 安裝
我正在嘗試讓 Munin 的各種 Apachie 外掛在我的 Web 伺服器上執行,但我遇到了問題。在要求 Munin 檢查可用外掛時,三個 Apache 外掛中的兩個返回一個錯誤,指出
找不到 apache 伺服器狀態
我已經
mod_status
打開等,據我所知,一切都設置正確。我嘗試
localhost/server-status
使用打開Lynx
,此時我收到 404 錯誤並顯示我的 Wordpress 錯誤頁面(當您嘗試訪問不存在的頁面時得到的頁面。)現在大概這與我如何讓 Apache 提供 Wordpress 安裝等有關。該網站位於 .htaccess 文件中
/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
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]
由於我在這篇文章中得到了幫助,並且如果您也未能像我最初所做的那樣應用 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
高於其他條件。
希望這可以幫助其他人來到這裡:)