PR
SERVER

Cloudflare × WordPress トラブルシューティング リダイレクトループや403エラーの解決策

Cloudflare × WordPress トラブルシューティング リダイレクトループや403エラーの解決策 SERVER

WordPressサイトにCloudflareを導入すると、表示速度の飛躍的な向上やセキュリティの強化が期待できます。しかし、設定を少し間違えるだけで「画面が表示されない」「管理画面(wp-admin)にアクセスできない」などの不具合が発生することも珍しくありません。

特に代表的なトラブルが「ERR_TOO_MANY_REDIRECTS」と呼ばれるリダイレクトループや、「403 Forbidden」によるアクセス制限です。この記事では、CloudflareとWordPressを組み合わせたときによく発生する代表的なエラーの原因と、実務ですぐに使える具体的な解決策を解説します。

ERR_TOO_MANY_REDIRECTS(リダイレクトループ)の原因と解決策

WordPressサイトにCloudflareを接続した直後に最もよく見かけるのが、「リダイレクトが多すぎます(ERR_TOO_MANY_REDIRECTS)」というエラー画面です。このエラーは、HTTPからHTTPSへの転送設定において、Cloudflareとサーバー間で処理が堂々巡りになるリダイレクトループが発生していることを意味します。

原因:SSLやTLSの設定ミスマッチ

根本的な原因は、Cloudflare側のSSL暗号化モードと、オリジンサーバー(レンタルサーバーなど)のHTTPS設定に食い違いがあることです。たとえば、オリジンサーバーですでに無料のSSL証明書が有効になっているにもかかわらず、CloudflareのSSL設定が「フレキシブル(Flexible)」になっていると、以下のような悪循環に陥ります。

  1. ブラウザが「HTTPS」でCloudflareにアクセスする
  2. Cloudflareは「HTTP」でサーバーへリクエストを転送する(フレキシブル設定のため)
  3. サーバー側は「HTTPS」での通信を強制しており、Cloudflareに「HTTPSにリダイレクトしなさい」と返す
  4. Cloudflareはブラウザに「HTTPSにリダイレクト」という指示を出し続ける

解決策:SSL暗号化モードをフルまたはフル(厳密)に変更する

最も簡単で確実な解決策は、Cloudflareの管理画面からSSL機能を「フル(Full)」または「フル(厳密)(Full strict)」に変更することです。

  • Cloudflareのダッシュボードにログインする
  • 対象のドメイン(ウェブサイト)を選択する
  • 左サイドメニューから「SSL/TLS」を開く
  • 暗号化モードを「フル」または「フル(厳密)」に変更する

この設定変更により、Cloudflareとオリジンサーバー間の通信もHTTPSで行われるようになり、ループが解消されます。また、変更を反映させるためにブラウザやWordPressに導入しているキャッシュプラグインのキャッシュを一旦クリアしてください。

403 Forbidden の原因と解決策

「403 Forbidden」は、リクエストは正常にサーバーまで届いたものの、アクセス権限がないためにサーバー側で閲覧を拒否した際に出るHTTPステータスコードです。

403 Forbiddenエラー画面の確認

原因:ボット対策機能やWAFの誤検知

Cloudflareを通すと、すべてのアクセスはプロキシサーバーを経由することになります。このとき考えられるシナリオは主に2つです。

  • CloudflareのWeb Application Firewall(WAF)やボット対策が、WordPressの一部機能(REST APIの呼び出しやプラグインの処理など)をサイバー攻撃と誤認してブロックしている
  • レンタルサーバー側のセキュリティ機能(国外IPからのアクセス制限など)が、Cloudflareの中継サーバーからのアクセスを不審なものとして全遮断している

解決策1:サーバー側の国外IPアクセス制限を見直す

日本のレンタルサーバー(ロリポップやエックスサーバーなど)では、WordPressの管理画面などに海外IPからのアクセスを制限する機能が標準で有効になっています。Cloudflareのエッジサーバーは世界中にあるため、これがブロックの原因となります。サーバーのコントロールパネルを開き、「国外IPアクセス制限」や「WordPressセキュリティ設定」などを一時的に無効にして症状が改善するか確認してください。

解決策2:Cloudflare側でWAFの例外ルールを設定する

逆に、Cloudflare側で弾かれている場合は、ダッシュボードの「セキュリティ」→「イベント」からアクセスログを確認します。「ブロック」されているリクエストの中に、自身のアクセスや必要なAPI(wp-jsonなど)が含まれていれば、ルールIDを特定した上で例外ルールに登録します。

wp-admin にアクセスできない場合の対処

表側のサイトは正常に見えるのに、管理画面(wp-admin / wp-login.php)にだけアクセスできなかったり、ログインを繰り返して弾かれてしまったりする問題も厄介です。

原因:Cookieの不一致や転送ルールの衝突

Cloudflareの設定で「Always Use HTTPS(常にHTTPSを使用)」が有効のとき、WordPress側が環境変数上で自身がHTTPS通信していることを正しく認識できないと、ログイン用のCookieが適切に発行されず管理画面に入れません。

解決策:wp-config.php にリバースプロキシ設定を追記する

WordPressがプロキシ配下で稼働していることを正しく認識させるため、`wp-config.php` の上部(`require_once(ABSPATH . ‘wp-settings.php’);` より上の行)に以下のコードを追加します。

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

これにより、プロキシ経由でも「現在はHTTPSでの接続だ」と判断できるようになり、ログインエラーや意図しない管理画面ループが解消します。コードを修正した後はブラウザのキャッシュをクリアしてから再度ログインを試してください。

Mixed Content エラーの対処

HTTPS化後に、ブラウザのアドレスバーに「安全ではありません」と警告が出たり、サイト内の一部の画像やCSSが読み込まれない状態を「Mixed Content(混在コンテンツ)」と呼びます。

原因:URLリンク内に「http://」が残っている

サイト全体は「https://」で配信されていても、記事内の画像のURLやテーマファイルの読み込み元が「http://」から始まるURLとしてハードコーディングされていると、ブラウザはセキュリティリスクとして該当ファイルの読み込みを遮断します。

解決策:Automatic HTTPS Rewrites を有効にする

最も手軽な対処法は、Cloudflareの機能を使って自動置換させることです。以下の手順で設定します。

  1. Cloudflareダッシュボードの左メニュー「SSL/TLS」を開く
  2. サブメニューの「エッジ証明書(Edge Certificates)」へ進む
  3. 「Automatic HTTPS Rewrites」のスイッチをONにする

この機能を使うと、CloudflareがHTMLに含まれる「http://」のうち、安全に置換できるURLリンクをすべて自動的に「https://」に書き換えて配信してくれます。

キャッシュが効かない場合のデバッグ方法

デザインを変更したのに反映されない、あるいは不具合を修正したのに古いファイルが読み込まれ続けるのもあるあるです。

原因:CDN側に古い応答データが保持されている

WordPress側のキャッシュプラグインをクリアしても、その手前にあるCloudflareのサーバーに強固なキャッシュが残ったままでは、エンドユーザーには常に古いデータが返されてしまいます。

解決策:Cloudflareのすべてをパージと開発者モード

CSSやJSなどを変更した際は、必ずCloudflare側でもデータ削除を行いましょう。

  • ダッシュボード右上の「キャッシュをパージ(Purge Cache)」から「すべてパージ(Purge Everything)」をクリックする
  • 作業中は、概要ページなどの右下にある「開発者モード(Development Mode)」を一時的にONにすることで、キャッシュ機能を一時バイパスできる

万が一、Cloudflareを通してキャッシュがどう働いているかをブラウザで直接確認したい場合は、ブラウザのデベロッパーツール(Networkタブ)を開き、対象ファイルのレスポンスヘッダに `cf-cache-status: HIT` や `cf-cache-status: MISS` が出力されているかを見ることで、原因がサーバー側かCDN側かを特定できます。

まとめ

CloudflareとWordPressの組み合わせは強力な反面、インフラとアプリケーションの境界で発生するリダイレクトループやエラーに悩まされることも少なくありません。トラブルシューティングの基本は、「どこで接続が遮断・ループしているのか」を冷静に見極めることです。

  • リダイレクトループ(ERR_TOO_MANY_REDIRECTS)が発生したら、SSL設定を「フル(厳密)」にする
  • 403エラーが起きたら、サーバー側のIP制限やWAFのブロックログを確認する
  • 管理画面エラーならプロキシ転送用のコード(X-Forwarded-Proto)をwp-config.phpに追記する
  • 混在コンテンツやデザイン崩れには、HTTPS自動書き換えとキャッシュパージを活用する

これらの対処法を押さえておけば、大半のトラブルは速やかに解決できます。サイトの安定稼働とパフォーマンス向上のためにも、設定を見直し、安全なサーバー環境を維持してください。

この記事を書いた人
Naokazu Yokoo

エンジニア歴20年以上。現在はWeb / AI領域で活動中。
開発環境・サーバー環境ともに速度と効率性を追求しています。

Follow Naokazu Yokoo
Follow Naokazu Yokoo

Comment

タイトルとURLをコピーしました