トラブルシューティング for WordPress

エラー対処と人気プラグイン・テーマ解説

[wpseo_breadcrumb]

SiteGuard – ログインできない「404」の謎

SiteGuard – ログインできない「404」の謎のアイキャッチ画像

WordPressのセキュリティ強化に欠かせないプラグイン「SiteGuard WP Plugin」。 非常に優秀なプラグインですが、「管理者(自分)は入れるのに、特定のユーザーだけがどうしても404エラーでログインできない」という、極めて不可解なトラブルに遭遇しました。

試行錯誤の末にたどり着いた原因と、最も確実だった解決法を記録します。


1. 謎の現象:履歴は「成功」、画面は「404」

ある日、ユーザーから「ログインURLを叩いても404エラー(ページが見つかりません)が出て入れない」と相談を受けました。

不思議なことに、管理者の私は問題なくログインできます。そこでSiteGuardの「ログイン履歴」を確認してみると、さらに混乱する事実が判明しました。

  • 1回目: ログイン失敗(これは単純な入力ミスと思われます)
  • 2回目以降: すべて「ログイン成功」と記録されている

サーバー側(SiteGuard)は「ログインOK!」と判定して扉を開けているのに、ユーザーのブラウザには「そんなページはありません(404)」と表示されているのです。


2. 徹底検証:キャッシュでもパスワードでもなかった

最初は「URLの打ち間違い」や「キャッシュ」を疑いました。しかし、検証を進めるうちに事態は深刻であることが分かりました。

  • ID/パスワードの検証: ユーザーからIDを聞き、私の環境で試すと…… ログイン成功。
  • 新規ユーザーの作成: テスト用の新アカウントを作って相手に試してもらう…… やはり相手だけ404。
  • キャッシュクリア: ブラウザのキャッシュを完全に削除してもらう…… 効果なし。

ここで私は気づきました。これはユーザー側の単純なミスではなく、「特定のID(ユーザー)がログイン処理を通った直後に、SiteGuardのURL変換ルールに弾かれている」という、システム内部の不整合だと。


3. 【深掘り解説】なぜこんな矛盾が起きるのか?

なぜ「履歴は成功」なのに「画面は404」になるのか。その鍵は、サーバーの設定ファイルである .htaccess にあります。

SiteGuardの仕組み

SiteGuardはログインURLを変更する際、.htaccess に「この特殊なURL(login_xxxxx)に来たアクセスだけを wp-login.php に通す」という書き換えルールを追記します。

SiteGuardがログインURLを変更するとき、サーバーのルートにある .htaccess ファイルには以下のようなコードが自動挿入されます。

# SITEGUARD_PLUGIN_SETTINGS_START
...
RewriteRule ^login_12345(.*)$ wp-login.php$1 [L]
...
# SITEGUARD_PLUGIN_SETTINGS_END

矛盾が起きるメカニズム(仮説)

  1. 認証フェーズ: ユーザーが入力したID/パスワードはSiteGuardを通過し、WordPress本体で「ログイン成功」と判定される(ここでログが記録される)。
  2. リダイレクトフェーズ: ログイン成功後、WordPressは通常 /wp-admin/(管理画面)へリダイレクトさせます。
  3. エラー発生: ここで、何らかの理由で .htaccess のルールが「このユーザー(あるいはこのセッション)は正規のルートを通っていない」と誤認し、ログイン後の管理画面へのアクセスを遮断(404)してしまう

つまり、**「玄関は開けてくれたのに、廊下を歩こうとしたら落とし穴に落ちた」**ような状態です。

今回のトラブルでは、この書き換えルールとWordPress本体のログイン後の挙動が、特定のID(ユーザー)において何らかの理由でコンフリクト(衝突)を起こしていたようです。


4. 解決策:SiteGuardを一度「空」にする

色々試しましたが、結局一番効果があったのは**「設定を完全にリフレッシュすること」**でした。

復旧させた手順

  1. ログインURLをデフォルト(wp-login.php)に戻す
    • SiteGuardの設定画面で、一旦変更を解除します。
  2. SiteGuardプラグインを「無効化」する
    • これが重要です。無効化することで、.htaccess に書き込まれたSiteGuard独自のコードが一旦すべて削除されます。
  3. 相手にログインを試してもらう
    • ここで無事にログインできることを確認。これで「IDの呪い」は解けました。
  4. 再びプラグインを「有効化」し、URLを再設定する
    • 再度有効化することで、.htaccess にクリーンな状態でルールが再書き込みされます。

この手順の後、再び変更後のURLを伝えたところ、今度は嘘のようにスムーズにログインが成功しました。

プラグインを無効化する」ことには大きな意味があります。

  • .htaccessの強制リセット: SiteGuardを無効化すると、プラグインが .htaccess に書き込んでいたコードが一旦削除されます。
  • 「ゴミ」の掃除: 手動で設定を変更しただけでは、稀に .htaccess 内に古い設定が残ってしまう(残骸が残る)ことがあります。無効化→有効化の手順を踏むことで、現在の設定に基づいた「きれいな設定コード」が .htaccess に再書き込みされます。

5. まとめ:困ったら「物理的なリセット」を

今回の件で痛感したのは、「管理画面上の設定を保存し直すだけでは不十分な場合がある」ということです。

特定のユーザーだけがログインできない、しかもログは成功している……そんな時は、迷わず「プラグインの無効化→有効化」を試してみてください。

.htaccess というサーバーの根本的な設定がリフレッシュされることで、見えない不整合が一気に解消されるはずです。

同じ悩みを抱えるWordPress管理者の助けになれば幸いです。