Apache-2.2

Apache 伺服器狀態返回 404,然後重定向到我的 Wordpress 安裝

  • March 15, 2017

我正在嘗試讓 Munin 的各種 Apachie 外掛在我的 Web 伺服器上執行,但我遇到了問題。在要求 Munin 檢查可用外掛時,三個 Apache 外掛中的兩個返回一個錯誤,指出

找不到 apache 伺服器狀態

我已經mod_status打開等,據我所知,一切都設置正確。

我嘗試localhost/server-status使用打開Lynx,此時我收到 404 錯誤並顯示我的 Wordpress 錯誤頁面(當您嘗試訪問不存在的頁面時得到的頁面。)

現在大概這與我如何讓 Apache 提供 Wordpress 安裝等有關。該網站位於 .htaccess 文件中/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

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

高於其他條件。

希望這可以幫助其他人來到這裡:)

引用自:https://serverfault.com/questions/466734