AIで課題を可視化、無茶楽(MUCHARaku)で成果に変える

WordPressでサブディレクトリ切替後にスマホだけログインできなかった話

WordPressログイン画面とスマホで403エラーが表示される様子を示したモノクロの線画イラスト

WordPressサイトをリニューアルする際、これまで /sub/ をルートに見せる設定をしていたものを、新しく /sub-new/ をルートに見せる設定に切り替えました。PCでは問題なくログインできたものの、スマホからログインすると403エラーが発生するという不思議な状況に陥りました。

あわせて読みたい
WordPressをサブディレクトリに設置してルートドメインで運用する方法 WordPressは通常ルートディレクトリにインストールして運用しますが、サブディレクトリに設置しておきながら、ルートドメインで公開することも可能です。この方法は「テ...
目次

.htaccessに残っていた古いアクセス制御が原因

調査を進めると、原因は .htaccess に残っていた古いアクセス制御でした。具体的には wp-login.php へのアクセスを特定のIPだけ許可するルールが残っており、PCは既存セッションで動いていたため気づかず、スマホは新規アクセスだったため403で弾かれていたのです。

<Files wp-login.php>
order deny,allow
Deny from all
Allow from 118.xxx.xxx.xxx
...
</Files>

このルールを削除し、代わりに以下のように「すべて許可」に書き換えたところ、スマホでも正常にログインできるようになりました。

<IfModule mod_authz_core.c>
  <Files "wp-login.php">
    Require all granted
  </Files>
</IfModule>
<IfModule !mod_authz_core.c>
  <Files "wp-login.php">
    Order allow,deny
    Allow from all
  </Files>
</IfModule>

キャッシュをクリアした後に再テストすると、PC・スマホともに問題なくログイン可能になり、リニューアル作業を続行できました。


補足:なぜ許可IPでも403だったのか

今回のログを詳しく確認すると、Apacheの access_compat モジュール経由でエラーが出ていました。これは、Apache 2.2形式(order/deny/allow)と2.4形式(Require)が混在している時に起こる現象です。結果として、上位で「Require all denied」が効いてしまい、許可IPを指定してもスマホからのアクセスがブロックされていた可能性があります。

さらに、スマホやVPNはIPv6でアクセスすることも多く、IPv4の Allow from にだけ許可を書いても、IPv6ではマッチせず403になるという落とし穴も考えられます。


SiteGuardの影響

今回の .htaccess の記述は、過去に導入していたセキュリティプラグイン(SiteGuard WP Plugin など)が自動で書き込んだものと思われます。プラグインを削除しても .htaccess に残骸が残ることがあり、リニューアルやディレクトリ切替の際に思わぬトラブルの元になります。


今回の学び(チェックリスト)

  • 既存セッションは信用しない:PCで動いても安心せず、スマホやシークレットモードで必ずログイン確認をする。
  • .htaccessを見直す:リニューアルやサブディレクトリ切替時には古いアクセス制御が残っていないか確認する。
  • Apache 2.2書式は使わないorder/deny/allow は廃止方向。Require ip に統一する。
  • IPv6も考慮する:モバイル回線はIPv6になることが多い。アクセス制御をする場合はIPv4/IPv6両方を記述する。
  • セキュリティ対策は別の方法で:IP制限ではなく、Turnstile、reCAPTCHA、二段階認証といった方法が現実的で安全。
  • キャッシュを必ずクリア:不具合調査時はサーバーキャッシュとブラウザキャッシュの両方を削除する。

この一件で、リニューアル作業では「表示ができたか」だけでなく「どの端末からでも同じように動くか」を確認することの大切さを改めて実感しました。PCだけでなくスマホ環境での検証を習慣化することが、安定運用への近道だと思います。

関連リンク

あわせて読みたい
WordPressをサブディレクトリに設置してルートドメインで運用する方法 WordPressは通常ルートディレクトリにインストールして運用しますが、サブディレクトリに設置しておきながら、ルートドメインで公開することも可能です。この方法は「テ...
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

1995年から25年以上、企業のWebサイト運営を支援してきました。
現在は「無茶楽(MUCHARaku)」を通じて、AIや最新のツールを活用し、より効率的で楽しいサイト改善をお手伝いしています。

目次