WordPress ログイン画面のリダイレクトループから脱出

ログインできない

先日ブログにログインしようとした所、
このウェブページにはリダイレクト ループが含まれています
といったメッセージと共にログイン画面へ一切遷移できなくなりました。
WEBを探して出てきた方法では解決できなかったので、備忘録として。

リダイレクトループとは

同じファイルへリダイレクトするように設定すると、無限に同じファイルへアクセスし続けます。
その際、無駄な処理で負荷が掛からないようにブラウザ側でアクセスを止めてエラーを表示させます。

通常のリダイレクトの場合

リダイレクト
Bのページへ行きたいので、自動で飛ぶようにリンクを貼ります。
Aのページへ来た人は、特に意識せずにBのページへ移動できます。
丁度今だと、以前の「Kixiの雑記帳」URLへアクセスした人は、自動的に新しいURLへアクセスするようにリダイレクトを貼っていますので、
kixi.lv9.orgへアクセスしてみて、URLの遷移を見たらわかりやすいかも。

リダイレクトループが発生している場合

リダイレクトループ
Aのページへアクセスすると、自動でAのページへ飛ぶようにリンクが貼ってあります。
踏んだら最後、エラーが出るまで無限にAのファイルをリロードし続けるマシーンと化すのです。
通常、phpなどでサイトを構築していてこのようなエラーが出た場合、ほぼリンクの宛先ミスです。
リンクの飛び先を設定しているファイルを探して修正すると良いでしょう。

しかしWordPressは

そうは行きません。
何故なら、非常に巨大なプログラム群のためどこでエラーが出ているのかの特定が容易ではありません。
しかも、今回はphp的にはエラーではありません。
ブラウザが勝手にアクセスを止めてエラー表示しているだけなので、php側でエラーメッセージなどは表示されません。
ただリダイレクトしているだけですからね…。
更に、今回は前日普通にログインできていたので、何が悪いのか分からず途方に暮れました。
「template-loader.php」の「template_redirect」をコメントアウトするとか、.htaccessのリダイレクトの部分を消すなど、WEBに落ちてそうな所は修正してみましたが、通常のページにすらアクセスできなくなるなど、更なる病状の悪化を招きました。
URLの設定ミス(よく考えたら前日普通にアクセスできていたのでそんな訳ない)も疑って、MySQLの中のサイトURLを確認したり、最終的にはブログをバックアップから入れなおしましたが、それでも同様のエラーが出続けました。

解決策

あまり美しくはないかもしれませんが、原因と解決策が分かりましたので、こちらに記しておきます。

原因

WordPressの「国外IPアクセス拒否設定」というものが悪さをしているようで、どういう事か国内からのアクセスも拒否してくれていたようです。
こちらの機能でブロックされると、通常のブログページへはアクセスできるのですが、管理側の画面へ一切行けなくなってしまうらしい。
恐らくですが、以前のWordPressの設置場所が海外だった為、国内鯖へ移動した際に逆に国内からのアクセスを外国だと認識してしまった???
正直よくわからん。
恐らく、当日アクセスできたのはキャッシュが生きていたからでしょうか。
結局よくわかりません。

解決方法

WordPressをインストールしているルートの「.htaccess」ファイルへ一行追加します。

SetEnvIf Request_URI “.*” AllowCountry

全ての国からのアクセスを許容します。
セキュリティ的には良くないのかもしれませんが、管理画面へ一切行けないよりかは良いと思います。
こちらを記述してみて、通常通り管理画面へ行けたら、少なくとも原因の切り分けは出来ますよね。
その後どのように設定するのはまた別の話です。

最後に

何故か会社のPCからは普通に管理画面へ行けました。
会社で更新しろって事か…。
どのような基準でフィルタが弾いているのか、知っている方が居たら教えて欲しいです…。
以上、もし困っている方が居たら試してみてください。
それでは!