WordPressでwp-adminとwp-login.phpがトップページにリダイレクトされる原因と対処法

WordPressでwp-adminとwp-login.phpがトップページにリダイレクトされる原因と対処法

WordPressでwp-adminとwp-login.phpがトップページにリダイレクトされる原因と対処法

WordPressでwp-adminやwp-login.phpにアクセスしてもトップページへリダイレクトされる場合、原因はセキュリティプラグインによるログインURLの変更、.htaccessのリダイレクト設定、またはCloudflareのページルールであることが多い。ホスティング管理画面にアクセスできない状態でも、まずは非表示ログインURLの候補を順に試し、解決しなければホスティング会社に所有証明を添えて連絡するのが最も確実な復旧経路だ。

なぜwp-adminとwp-login.phpがトップページへ飛ばされるのか

なぜwp-adminとwp-login.phpがトップページへ飛ばされるのか

ログインページへのアクセスがホームページへリダイレクトされる症状には、いくつか典型的な原因がある。最も多いのがセキュリティプラグインやログインURL変更プラグインによるURLの秘匿化だ。Elementorなどのページビルダーがログインリダイレクトを引き起こすことはほとんどないため、まずはセキュリティ機能まわりを疑う。

セキュリティプラグインによるログインURLの変更

WPS Hide Login、iThemes Security、All In One WP Securityなどのプラグインは、ログインページのURLを任意の文字列に変更できる。デフォルトのwp-login.phpやwp-adminを無効化し、たとえば「/login/」や「/member/」など開発者が設定したURLだけを有効にする。この機能が有効な状態では、元のURLにアクセスするとホームページへリダイレクトされるのが一般的な挙動だ。

.htaccessに記述されたリダイレクトルール

サーバーの.htaccessファイル(Apacheの設定ファイル)に、wp-adminやwp-login.phpを対象にしたリダイレクトルールが記述されているケースもある。セキュリティ対策として意図的に追加された場合と、不正アクセスによる改ざんの両方が考えられる。改ざんの場合は他のファイルにも不正なコードが仕込まれている可能性があるため、注意が必要だ。

CloudflareのページルールやWAF設定

ドメインのネームサーバーがCloudflareに向いている場合、Cloudflare側のページルールやWAF(Webアプリケーションファイアウォール)のカスタムルールがwp-adminやwp-login.phpへのアクセスをブロックまたはリダイレクトしている可能性もある。Cloudflareの管理画面にアクセスできなければこの設定を確認できないため、原因の切り分けが難しくなる。

カスタムコードによるリダイレクト

テーマのfunctions.phpやmu-plugins(マストユースプラグイン、プラグイン画面から無効化できない自動有効プラグイン)に、ログインURLをリダイレクトするカスタムコードが書かれていることもある。制作会社やフリーランスの開発者がセキュリティ目的で追加するケースが多く、ドキュメントが残っていないと原因の特定に時間がかかる。

ホスティングにアクセスできない時にできる確認と対処

ホスティングにアクセスできない時にできる確認と対処

ホスティング管理画面もCloudflareも使えない状況でも、できる確認は残っている。順番に試していくことで、サーバーに触らずにログインできるケースもある。下の図は復旧までの流れをまとめたものだ。

STEP 1 非表示ログインURLの候補を順番に試す
↓
STEP 2 シークレットウィンドウでキャッシュの影響を排除する
↓
STEP 3 検索エンジンのキャッシュから手がかりを探す
↓
STEP 4 ホスティング会社に所有証明を添えて連絡する

ホスティングやCloudflareにアクセスできない状態で行う確認の流れ。非表示URL候補の試行から始め、それで解決しなければホスティング会社への直接連絡に進む。

非表示ログインURLの候補を順番に試す

ログインURL変更プラグインが使われている場合、実際のログインページはデフォルトのwp-adminやwp-login.phpではない。よく使われる候補として「/login/」「/admin/」「/dashboard/」「/member/」「/members/」「/my-account/」「/wp-login.php?redirect_to=/wp-admin/」などがある。サイトのURLの末尾にこれらを付けて、ログイン画面が表示されるかを確認する。

また、サイトのフッターやお問い合わせページにログインリンクが設置されていないかも確認する。リンク先が非表示ログインURLになっていることがある。サイト内検索で「login」「ログイン」という文字列を探すのも有効だ。

シークレットウィンドウでキャッシュとクッキーの影響を排除する

ブラウザのキャッシュやクッキーが原因でリダイレクトが発生している可能性を排除するため、シークレットウィンドウ(プライベートブラウジング)で同じURLにアクセスする。シークレットウィンドウでも同じ症状が出るなら、ブラウザ側のキャッシュではなくサーバー側の設定が原因だと判断できる。

検索エンジンのキャッシュから過去のログインページを探す

GoogleやBingのキャッシュに、過去のログインページのURLが残っていることがある。検索エンジンで「site:example.com ログイン」や「site:example.com wp-admin」のように検索すると、過去にインデックスされたログイン関連ページが見つかる場合がある。キャッシュされたURLが非表示ログインURLの手がかりになる。

ホスティング会社に直接連絡して管理アクセスを取り戻す手順

ホスティング会社に直接連絡して管理アクセスを取り戻す手順

ログインURLの候補を試しても解決せず、開発者にも連絡がつかない場合、ホスティング会社に直接連絡して管理アクセスを取り戻すのが最も確実な方法だ。契約者が誰であっても、所有証明を提示すれば対応を受けられるケースが多い。

所有証明書類を準備する

ホスティング会社に連絡する前に、サイトの所有者であることを証明できる書類を準備する。具体的にはホスティングやドメインの契約時の請求書、支払い明細、クレジットカードの利用履歴、登録メールアドレスに届いた契約確認メールなどだ。ドメインのwhois情報に自分の名前が登録されていれば、それも有力な証明になる。

サポート窓口に状況を正確に伝える

ホスティング会社のサポート窓口(電話、チャット、メールフォーム)に連絡し、次の3点を簡潔に伝える。「サイトのドメイン名」「wp-adminがホームページへリダイレクトされてログインできない状況」「開発者が管理しているため管理画面のログイン情報を持っていないこと」。所有証明を求められたら、準備した書類を提示する。

アクセス回復後に依頼する作業

ホスティング会社から管理画面やFTPのアクセス権を回復したら、次の作業を依頼するか自分で行う。まず.htaccessファイルのバックアップを取り、リダイレクトルールの有無を確認する。次にwp-content/plugins/ディレクトリを一時的に別名にリネームして全プラグインを無効化し、ログインできるか試す。これが原因の切り分けとして最も確実な手順だ。

サーバーアクセスを回復した後に直すべき箇所

サーバーアクセスを回復した後に直すべき箇所

サーバーやFTPにアクセスできるようになったら、原因箇所を特定して修正する。下の図は.htaccessの修正前後のイメージだ。

修正前
.htaccess に wp-admin と wp-login.php をホームへ転送するルールが存在
RewriteRule ^wp-admin$ / [R=301,L]
RewriteRule ^wp-login\.php$ / [R=301,L]
↓
修正後
リダイレクトルールを削除し、ログインページへのアクセスが正常に戻る
# WordPress デフォルトのルールのみ残す
■ エラー状態 ■ 修正後

.htaccessのリダイレクトルールを削除することで、wp-adminとwp-login.phpへのアクセスが正常に戻るイメージ。変更前に必ずファイルのバックアップを取る。

.htaccessを確認してリダイレクト設定を削除する

FTPクライアントやファイルマネージャーでサーバーに接続し、WordPressのルートディレクトリ(通常はpublic_htmlまたはドメイン名のフォルダ)にある.htaccessファイルをダウンロードする。ファイルを開き、wp-adminやwp-login.phpを対象にしたRewriteRule(リライトルール、URL変換の設定)が記述されていないかを確認する。該当する行があれば削除して上書きアップロードする。

セキュリティプラグインを無効化して切り分ける

.htaccessに問題が見つからない場合、FTPでwp-content/plugins/ディレクトリの名前を一時的に変更する(例、plugins → plugins_bak)。これで全プラグインが無効化される。その後wp-adminにアクセスしてログイン画面が表示されるかを確認する。表示されればプラグインが原因だ。プラグインディレクトリを元の名前に戻し、セキュリティ系プラグインを1つずつ無効化しながら原因を特定する。

wp-config.phpとデータベースの設定を確認する

wp-config.phpに、ログインURLを変更する定数(WP_ADMIN_DIRやWP_HOME、WP_SITEURLなど)が追加されていないかも確認する。また、データベースのwp_optionsテーブルにあるsiteurlとhomeの値が実際のサイトURLと一致しているかを確認する。これらが不整合を起こしていると、リダイレクトループが発生することがある。

ログインページが飛ばされないための再発防止策

ログインページが飛ばされないための再発防止策

ログインページにアクセスできなくなる問題は、適切なアクセス管理とドキュメント化で再発を防げる。とくに外部の開発者に管理を委託している場合は、以下の対策を講じておくことが重要だ。

ログインURLの変更内容を記録して共有する

ログインURLを変更するプラグインを使う場合、変更後のURLを必ずドキュメントに記録し、サイト所有者と開発者の両方で共有しておく。パスワード管理ツールにログインURLと資格情報をまとめて保管するのが実用的だ。URL変更の設定をしたこと自体を忘れてしまうと、今回のようにログイン画面へ到達できなくなる。

ホスティングとドメイン管理へのアクセス権を確保する

サイト運営者自身がホスティング管理画面とドメイン管理画面のログイン情報を保持していない状況は、サイトの所有権を実質的に手放しているのと同じだ。開発者に管理を委託する場合でも、管理者アカウントの追加権限だけは共有してもらい、緊急時にアクセスできる状態を維持する。

定期的なバックアップと復旧手順の確認

ログインページがリダイレクトされる問題に限らず、サイトのトラブル全般に備えて定期的なバックアップを取得しておく。バックアップからの復旧手順も一度シミュレーションしておくと、緊急時に慌てずに対処できる。バックアップに含めるのはデータベースとwp-contentディレクトリの両方だ。

よくある質問

セキュリティプラグインを入れていないのにリダイレクトされるのはなぜ?

セキュリティプラグインがなくても、.htaccessのリダイレクトルール、Cloudflareのページルール、テーマのfunctions.phpに書かれたカスタムコードが原因になる。また、サイトが改ざんされている場合は、不正なコードがリダイレクトを引き起こしている可能性もある。サーバーのファイルを直接確認するのが確実な切り分け方法だ。

ホスティング会社に連絡する時に何を伝えればよい?

ドメイン名、wp-adminがホームページへリダイレクトされる状況、管理画面のログイン情報を持っていないことの3点を伝える。所有証明として請求書や支払い明細、契約確認メールを求められた場合に備えて準備しておく。whois情報に自分の名前が登録されていればそれも提示できる。

Cloudflareのページルールが原因だった場合、どうすればよい?

Cloudflareの管理画面にアクセスできるなら、ページルールとWAFのカスタムルールを確認し、wp-adminとwp-login.phpを対象にしたブロックやリダイレクト設定を無効化する。アクセスできない場合は、Cloudflareのサポートに所有証明を提示してアクセス回復を依頼する。ドメインのwhois情報が自分名義であれば回復できる可能性が高い。

ログインURLを変更した覚えがないのに変更されていた場合、ハッキングの可能性は?

可能性はある。サイトの改ざんによって.htaccessやfunctions.phpにリダイレクトコードが仕込まれたケースも報告されている。ログインできるようになったら、WordfenceやSucuriなどのセキュリティプラグインでスキャンを実行し、不審なファイルや管理者ユーザーがいないかを確認する。パスワードの全面変更も推奨される。

開発者に連絡がつかないままサイトを移管するには?

ホスティング会社からFTPと管理画面のアクセス権を取得したら、データベースのエクスポートとwp-contentディレクトリのダウンロードを行い、新しい環境へ移管する。DNS設定を変更して新しいサーバーに向ける。ドメインの管理権限が自分にあれば、移管は比較的スムーズに進む。旧環境の支払いが止まってサイトが消失する前に、早めの移管作業が重要だ。

この記事のポイント

  • wp-adminとwp-login.phpがホームへリダイレクトされる主因はセキュリティプラグインのURL変更、.htaccess、Cloudflare設定
  • ホスティングなしでも非表示ログインURLの候補試行やシークレットウィンドウ確認は可能
  • 開発者に連絡がつかない場合はホスティング会社へ所有証明を添えて直接連絡する
  • サーバーアクセス回復後は.htaccess確認とプラグイン無効化による切り分けが有効
  • 再発防止にはログインURLの記録共有とホスティング管理権の自己保持が欠かせない
佐々木 太陽

・ Reddit、Stack Overflow、WordPress.org フォーラムを日々巡回し、現場の悩みを拾い上げて記事化 ・ WordPress、WooCommerce、Next.js などモダンWeb制作領域のトラブルシューティングが専門 ・ 「検索しても答えが見つからなかった」を一つでも減らすことが目標 ・ エラーメッセージから根本原因にたどり着く粘り強い調査が得意 ・ 初心者がつまずきやすい箇所を先回りで解決する記事作りを心がけている

この記事に関連するサービス

メッセージを残す