WordPressを設置する時に少しでもセキュリティを高めるために管理画面やログイン画面にベーシック認証をかけています。
ファイル構成
/ |- .htaccess |- /wp | |- .htaccess | |- .htpasswd | |- /wp-admin |- index.php
WordPressはwp
ディレクトリ内に置き、wp
ディレクトリ内の.htaccess
でログイン画面(wp-login.php)にベーシック認証をかけていました。
今回なぜか/wp/wp-admin/
でログイン画面にアクセスしようとするとexample.com/wp/wp-login.php?redirect_to=http%3A%2F%2Fexample.com%2Fwp%2Fwp-admin%2F&reauth=1
にリダイレクトされエラーページ(404テンプレート)が表示されてしまう現象に遭遇しました。
ログイン画面のベーシック認証
/wp/.htaccess
は次のような感じです。
簡易にwp-login.php
にベーシック認証をかけ、パーミッションを400にしてあるwp-config.php
も念のため直接アクセスを禁止する感じにしていました。
# wp-login.php にベーシック認証をかける <files wp-login.php> AuthUserFile /webroot/wp/.htpasswd AuthGroupFile /dev/nul AuthName "Username and Password" AuthType Basic require valid-user </files> # wp-config.php への直接アクセスを禁止 <files wp-config.php> Order deny,allow deny from all </files>
エラーページの指定 (ErrorDocument) が原因だった!
ベーシック認証が表示されず、ログイン画面に遷移しないでエラーページ(404テンプレート)が表示されていた問題は、/.htaccess
に書いていたエラーページの指定 ErrorDocument
が原因でした。
エラーコードが401
の時の設定を ErrorDocument 401 404.html
のように指定していしている。かつ ログイン画面にベーシック認証をかけていると、今回のようなリダイレクトパラメータが付いた画面になりログイン画面が表示されないという現象になってしまうようです。ログイン画面にベーシック認証を書けていない場合はErrorDocument 401
が指定されていても問題なく動作しました。
ErrorDocument 401
の指定を消すか、次のように書き換えればば問題は解決されました。
ErrorDocument 401 default
wp-login.php
だけでなく/wp-admin
ディレクトリ下にベーシック認証を書けている場合もErrorDocument 401
がdefault
以外だと、同様にログイン画面が表示されなくなってしまいます。
まさか、ErrorDocument
の指定に問題があるとは思いもしなかったので、問題の解決に結構時間がかかってしまいました。日本語で検索しても全然ヒットしなかったのでw
やはりWEB関連のトラブルの際は全て英語のキーワードで検索してみるのが近道ダナ(・x・) と実感したのでした。
[参考]
- .htaccess - Protect wordpress wp-login.php permalinks not working (or other way round) - Stack Overflow
- WordPressの管理画面にベーシック認証をかける方法 – y.o.designers-works
- WordPressの管理画面とログイン画面にBasic認証を適用する.htaccessの記述 – Simple Colors
- 作者: 相原知栄子,大曲仁,プライム・ストラテジー株式会社
- 出版社/メーカー: 翔泳社
- 発売日: 2016/04/09
- メディア: 大型本
- この商品を含むブログ (1件) を見る