WordPressサイトを運営している中で、突然「このページは正しくリダイレクトされていません」というメッセージや「ERR_TOO_MANY_REDIRECTS」というエラーが表示されることがあります。
リダイレクトのループは、サイトの訪問者がページにアクセスできなくなるだけでなく、検索エンジンのクローラーもサイトを巡回できなくなるため、SEOにも悪影響を及ぼします。
特にWordPressプラグインでリダイレクト設定を行っている場合、設定の重複や競合が原因でこのトラブルが発生しやすい傾向にあります。
この記事では、WordPressでリダイレクトループが発生する原因の特定方法から、プラグインの具体的な設定、サーバー側の対処法までを詳しく解説します。
初心者の方でも順を追って作業すれば解決できるように構成していますので、焦らず一つずつ確認していきましょう。
リダイレクトループとはどのような状態か
リダイレクトループとは、ブラウザがあるページ(A)にアクセスしようとした際、サーバーが別のページ(B)へ転送を命じ、さらにそのページ(B)が再び最初のページ(A)へ転送を命じることで、無限に転送が繰り返される状態を指します。
ブラウザはこの無限ループを検知すると、ユーザーを保護するために通信を遮断し、エラーメッセージを表示します。
ユーザーから見ればサイトが完全にダウンしているように見えるため、早急な解決が必要な問題と言えます。
リダイレクトは通常、URLの変更やサイトのSSL化(httpからhttpsへの転送)に利用される便利な機能ですが、設定ミス一つでこのループを招いてしまいます。
リダイレクトループが発生する主な原因
WordPressでリダイレクトループが発生する原因は、主に以下の5つに集約されます。
原因を特定することで、最短距離で修正作業を進めることが可能になります。
- WordPressの「サイトアドレス」設定の誤り
- リダイレクトプラグインの設定ミスや競合
- ブラウザキャッシュやCookieの影響
- SSL化に伴うリダイレクト設定の不備
.htaccessファイルやサーバー側の設定ミス
これらの原因がどのようにループを引き起こすのか、具体的な解決策とともに見ていきましょう。
STEP1:ブラウザキャッシュとCookieのクリア
サイトの設定を変更する前に、まずは自分自身のブラウザ環境が原因でないかを確認する必要があります。
過去の閲覧データがブラウザにキャッシュされていると、サーバー側の設定を変更しても古いリダイレクト命令に従い続けてしまうことがあります。
まずは、ブラウザのシークレットモード(プライベートブラウズモード)でサイトにアクセスしてみてください。
シークレットモードで正常に表示される場合は、ブラウザのキャッシュやCookieを削除するだけで問題が解決します。
もしシークレットモードでも同様のエラーが出る場合は、サーバーやWordPress側の設定に原因があると判断できます。
STEP2:WordPressのアドレス設定を確認する
リダイレクトループの非常によくある原因の一つが、WordPress管理画面の「一般設定」にあるURLの不一致です。
「WordPressアドレス(URL)」と「サイトアドレス(URL)」に、わずかな違い(httpとhttpsの混在、wwwの有無など)があると、WordPressが正しいURLを求めて無限に転送を繰り返すことがあります。
管理画面にアクセスできる場合は、「設定」>「一般」から以下の2項目が正しく入力されているか確認してください。
- WordPress アドレス (URL)
- サイトアドレス (URL)
もし管理画面にアクセスできないほどエラーが深刻な場合は、wp-config.phpファイルを直接編集して修正することが可能です。
以下のコードをwp-config.phpに追加することで、データベースの設定を上書きしてURLを固定できます。
// WordPressのURLを強制的に定義する
define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');
この際、httpsであるか、wwwが必要であるかを正確に指定することが重要です。
STEP3:リダイレクトプラグインの設定を見直す
リダイレクトループが最も発生しやすい場所が、プラグインによる設定画面です。
「Redirection」などの専用プラグインや、SEOプラグイン(Rank MathやYoast SEOなど)のリダイレクト機能を利用している場合に注意が必要です。
「Redirection」プラグインの確認ポイント
多くのユーザーが利用している「Redirection」プラグインでは、正規表現の使用ミスがループの原因になることが多いです。
例えば、転送元URLに「/」だけを指定し、転送先にも「/」を含むURLを指定すると、すべてのアクセスが自分自身へとリダイレクトされる設定になってしまうことがあります。
プラグインの設定画面で、転送元と転送先が同じURLになっていないか、あるいは広範囲すぎる正規表現が設定されていないかを確認してください。
プラグインの競合を解消する
複数のプラグインでリダイレクト設定を行っている場合、それらが衝突してループを発生させることがあります。
原因を切り分けるために、リダイレクト関連のプラグインを一度すべて「無効化」してみましょう。
無効化した状態でサイトが正常に表示されるのであれば、特定のプラグインの設定に誤りがあることが確定します。
管理画面に入れない場合は、FTPソフトを使用して/wp-content/plugins/ディレクトリ内の該当プラグインフォルダの名前を変更することで、強制的に無効化できます。
STEP4:SSL設定のミスマッチを修正する
近年増えているのが、SSL(HTTPS)化に関連するリダイレクトループです。
特にCloudflareなどのプロキシサービスや、特定のレンタルサーバーの共有SSLを利用している場合に発生しやすくなります。
サーバー内部では「http」で通信しているにもかかわらず、WordPress側で「https」への強制転送をかけている場合に、サーバーとWordPress間で通信がループしてしまいます。
この場合、wp-config.phpに以下のコードを追加することで、リダイレクトを停止し解決できることがあります。
// プロキシ経由のSSL通信を正しく認識させる設定
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
この記述は、リダイレクトループが発生している多くの環境で有効な「おまじない」のような役割を果たします。
また、Cloudflareを利用している場合は、管理パネルの「SSL/TLS」設定を「フレキシブル」から「フル」に変更するだけで解決することも多いです。
STEP5:.htaccessファイルの内容を初期化する
サーバーの動作を制御する.htaccessファイルに、誤ったリダイレクト記述が残っている場合もエラーの原因となります。
プラグインを削除してもループが止まらない場合は、このファイルを確認してください。
まずは現在の.htaccessファイルをバックアップとしてダウンロードしておきます。
その後、ファイルの中身をWordPressの標準的な記述に書き換えてみてください。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
これにより、プラグインや手動で追加した不正なリダイレクト命令がリセットされます。
この作業を行う際は、必ず元のファイルのコピーを手元に残しておくようにしてください。
原因と対策の早見表
これまでの内容を整理し、症状別の原因と対策を以下の表にまとめました。
| 発生している症状 | 考えられる原因 | 解決アクション |
|---|---|---|
| 特定のブラウザのみで発生 | ブラウザキャッシュの不整合 | キャッシュとCookieの削除 |
| サイト全体がループする | サイトアドレス設定の誤り | wp-config.phpでのURL固定 |
| 特定のページのみループする | プラグインの転送設定ミス | Redirection等の設定見直し |
| SSL化直後に発生 | プロキシとサーバーの認識差 | HTTPS判定コードの追記 |
| 何をしても直らない | .htaccessの記述ミス | ファイルを初期状態に戻す |
トラブルを防ぐためのプラグイン運用のコツ
一度解決しても、プラグインの使い方次第では再びリダイレクトループが発生する恐れがあります。
予防策として、リダイレクト設定を行う際は「転送元」と「転送先」が絶対に重ならないように注意を払いましょう。
特に「正規表現(Regex)」のチェックボックスをオンにする際は、十分にテストを行ってください。
また、リダイレクト機能を持つプラグインを複数導入しないことも重要です。
例えば、SEOプラグインの「Rank Math」で転送設定を行いながら、同時に「Redirection」プラグインも動かしていると、どちらが優先されるか不明確になりトラブルの元となります。
一つのサイトで使用するリダイレクト管理ツールは一つに絞るのが、健全なサイト運営の鉄則です。
まとめ
WordPressでリダイレクトループが発生すると、一見するとサイトが壊れてしまったかのように感じて驚くかもしれません。
しかし、その多くは「設定の不一致」というシンプルな理由で発生しています。
まずはブラウザのキャッシュを確認し、次にWordPressのURL設定、そしてプラグインや.htaccessという順番でチェックしていけば、必ず解決の糸口が見つかります。
特にSSL化やプラグインの新規導入時には、設定後に必ずシークレットモードでの表示確認を行う習慣をつけましょう。
万が一のために、本記事で紹介したwp-config.phpや.htaccessの修正コードを覚えておくと、いざという時の復旧スピードが格段に上がります。
正しい知識を持って適切に対処し、ユーザーが快適に閲覧できるWordPressサイトを維持していきましょう。
