Apache FilesMatch(全域設定)優先於本機 .htaccess

Apache FilesMatch(全域設定)優先於本機 .htaccess

我想保護我的伺服器中的所有 Wordpress 管理介面 (wp-login.php/wp-admin)。為此,我想在 Apache 中建立一個全域配置,在到達真正的 WordPress 登入頁面之前要求提供固定的使用者/密碼(HTTP 基本驗證)。這將避免密碼掃描機器人導致 PHP 過載。

<FilesMatch "wp-login.php">
 AuthUserFile /etc/wordpress.passwd
 AuthName "TYPE USER wp AND PASSWORD wp"
 AuthType Basic
 require valid-user
</FilesMatch>

有效,任何名為 wp-login.php 的檔案都會要求輸入密碼。

但是當我運行 WordPress 網站時,.htaccess對全域配置有某種「優先權」。當我訪問 wp-login.php 時,我剛剛收到 404 錯誤。如果我刪除/重命名 .htaccess,FilesMatch 可以工作,但我丟失了「路徑遮罩」功能,這是必要的。

WordPress .htaccess 是:

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

我正在尋找一種使 FilesMatch 指令優先於 .htaccess (重寫模組)的方法:詢問密碼,而不是重寫 URL(給出 404)。

有任何想法嗎?

答案1

解決了

Wordpress .htaccess 重寫了所有內容,包括 HTTP 基本驗證、401 和 403 回傳程式碼使用的 ErrorDocument 指令。我有 ErrorDocument 的個人化 SHTML 檔案(cPanel 伺服器中的預設設定)。因此,它不會要求輸入密碼,而是重寫 HTTP 標頭,要求輸入密碼同時顯示 404 錯誤頁面,讓網頁瀏覽器瘋狂。

為了解決這個問題,我只是強制使用預設的 ErrorDocument 訊息:

ErrorDocument 401 default
ErrorDocument 403 default

相關內容