Apache FilesMatch (グローバル設定) はローカル .htaccess よりも優先されます

Apache FilesMatch (グローバル設定) はローカル .htaccess よりも優先されます

サーバー内のすべての Wordpress 管理インターフェース (wp-login.php/wp-admin) を保護したいです。これを実現するには、実際の WordPress ログイン ページに到達する前に、固定のユーザー名/パスワード (HTTP 基本認証) を要求するグローバル設定を Apache に作成します。これにより、パスワード スキャン ボットによる 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 (Rewrite モジュール) よりも優先させる方法を探しています。つまり、URL を書き換えるのではなく (404 を返す)、パスワードを要求します。

何か案は?

答え1

解決済み

Wordpress .htaccessは、HTTP基本認証、401および403リターンコードで使用されるErrorDocumentディレクティブを含むすべてを書き換えます。ErrorDocument(cPanelサーバーのデフォルト)用にカスタマイズされたSHTMLファイルがありました。そのため、パスワードを要求する代わりに、HTTPヘッダーを書き換えてパスワードを要求します。そして同時に 404 エラー ページが表示され、Web ブラウザーが異常終了します。

修正するには、デフォルトの ErrorDocument メッセージを強制します。

ErrorDocument 401 default
ErrorDocument 403 default

関連情報