サーバー内のすべての 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