【WordPress】マルチサイトで復活させた子サイトにログインできない!「Cookieがブロックされています」エラーの完全解決ロードマップ

スポンサーリンク

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_HOMEWP_SITEURL など、マルチサイトでバグの原因になりやすいコード)があれば削除し、以下のコードに差し替えます。

PHP

// --- ここから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に戻しても問題なくログインし続けられます)。

コメント