
WordPressでマルチサイト(サブディレクトリ型)を運用している際、アーカイブ(休止)していた子サイトを復活させてダッシュボードに入ろうとしたところ、正しいパスワードを入力しているにもかかわらず「Cookie がブロックされているか、お使いのブラウザーで未対応のようです」というエラーが出てログイン画面にループする現象に遭遇しました。
ブラウザのキャッシュクリアや別ブラウザでの検証、さらにはサーバーのセキュリティブロック(二次災害)の解除を経て、最終的に wp-config.php のコード修正で根本解決するまでの全記録をまとめました。
1. 発生した現象
マルチサイト環境で、アーカイブ化(休止)していた子サイトを復活させた。
子サイトのログイン画面(
wp-login.php)で正しいユーザー名とパスワードを入力。しかし、以下のエラーメッセージが表示されてダッシュボードに進めず、ログイン画面にループしてしまう。
「エラー: Cookie がブロックされているか、お使いのブラウザーで未対応のようです…」
2. 解決のために確かめたこと(検証のステップ)
原因を特定するために、以下の順番で切り分けと対策を行いました。
ステップ①:ブラウザ依存のチェック(シークレットモード・別ブラウザ)
ブラウザに残っている古いキャッシュやCookieの干渉、あるいはブラウザ特有の強力な保護機能(シールド)が原因かを確認するため、以下の2点を検証。
ブラウザの保護機能(シールドやブロック機能)を完全に「オフ」にして再試行。
別ブラウザの「シークレットウィンドウ(インプライベートウィンドウ)」で試行。
【結果】 いずれも現象は変わらずエラー。ブラウザ個別の設定ではなく、WordPressのシステム側に原因があると判定。
ステップ②:サーバー側セキュリティの解除(二次災害への対応)
ログイン試行や画面のリフレッシュを短時間に繰り返したことで、レンタルサーバーの自動防衛システム(国外アクセス制限、ログイン試行回数制限)に引っかかり、「WordPress管理画面へのログイン処理が拒否されました」というサーバー独自の画面で完全ロックされる二次災害が発生。
【対策】 サーバーの管理パネル(セキュリティ設定等)から、該当ドメインの「ダッシュボードアクセス制限(国外アクセス制限)」と「ログイン試行回数制限」を一時的に「OFF」に設定してロックを解除。
3. 原因の追求:なぜログインループが起きたのか?
根本的な原因は、「WordPressマルチサイトにおける、ログインCookieの認識のズレ」でした。
WordPressはログイン状態を保持するために、ブラウザに暗号化されたCookie(クッキー)を保存します。通常、マルチサイト(サブディレクトリ型)では親サイト(メインサイト)のURLを基準にCookieを生成します。
しかし、親サイトの基準パスが変則的な指定になっている環境では、復活させた子サイトのURLとCookieの生成ルールが完全に噛み合わなくなってしまうことがあります。 結果として、WordPressが「親サイトの基準とURLが違うから、このログイン情報は無効である」と誤判定し、Cookieエラーを吐き続けていたのです。
4. 解決方法:wp-config.php の書き換え
WordPressのシステムに対し、「サイト全体のどこであっても同じルールでログインCookieを共通認識し、この子サイト専用の暗号キーを再生成しろ」という強制命令を出すことで解決しました。
修正手順
FTPソフト等でサーバー上の wp-config.php をダウンロードし、テキストエディタで開きます。
マルチサイト定義部分(/* 編集が必要なのはここまでです... */ の直前あたり)にある、過去の暫定対応コード(WP_HOME や WP_SITEURL など、マルチサイトでバグの原因になりやすいコード)があれば削除し、以下のコードに差し替えます。
// --- ここからCookieループ対策のコード ---
define('COOKIE_DOMAIN', '');
define('ADMIN_COOKIE_PATH', '/');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
define('COOKIEHASH', md5('https://your-domain.com/your-subsite')); // ★ご自身の復活させた子サイトURLに変更してください
// --- ここまで ---
/* 編集が必要なのはここまでです!WordPress でブログをお楽しみください。 */
コードの解説
COOKIE_DOMAINなどの4行: サブディレクトリの階層がどうなっていても、サイト全体(/)でログインCookieの有効範囲を共通化・強制認識させる記述です。COOKIEHASHの1行: 復活させた子サイトのURL専用に、Cookieの暗号化の「鍵(ハッシュ値)」を新しく作り直してリセットする記述です。
この状態でファイルを保存し、サーバーへ上書きアップロードしたところ、一発でエラーが解消し、無事に子サイトのダッシュボードへログインすることができました。
5. まとめと注意点
WordPressのマルチサイト環境、特にサブディレクトリ型での「Cookieエラーによるログインループ」は、設定ファイルやデータベース内のURLのわずかな不整合で発生します。
同じ現象が起きた方は、プラグインの停止やブラウザのキャッシュ消去を試すとともに、wp-config.php でのCookieパスの強制統一・ハッシュ値の再生成を試してみてください。
※なお、ログイン成功後は、安全のためにサーバー側で一時的にOFFにした「ダッシュボードアクセス制限」や「ログイン試行回数制限」を「ON」に戻すのを忘れないようにしましょう!(一度WordPress側のCookieバグが直っていれば、ONに戻しても問題なくログインし続けられます)。
コメント