【WordPressトラブル】REST API の「Too Many Redirects」エラーと Cloudflare の意外な落とし穴


WordPressのブロックエディタや外部アプリが使っている REST API にアクセスしようとすると、「Too many redirects」エラーが発生することがあります。今回は、Cloudflare を導入している WordPress サイトで実際に遭遇した リダイレクトループのトラブルとその解決策をご紹介します。


📌 事象:REST API が無限リダイレクト

WordPress サイトでブロックエディタを開いたとき、以下のようなエラーが発生しました:

REST API エンドポイント: https://kiwamaqs.com/weblog/wp-json/wp/v2/types/post?context=edit
REST API レスポンス: (http_request_failed) Too many redirects

ブラウザで直接 REST API のエンドポイントを開いても、エラーまたはリダイレクトループが発生して表示できませんでした。


🧠 原因:HTTPS と Cloudflare の設定不整合によるリダイレクトループ

このエラーの原因は、HTTPS リダイレクトが WordPress 側と Cloudflare 側で二重に設定されていたことでした。

🔍 原因の詳細

  • WordPress 側で http://https:// にリダイレクト
  • Cloudflare 側でも「Always Use HTTPS」が有効になっており、HTTP リクエストを強制的に HTTPS に変更
  • Flexible SSL モードを使っていたため、Cloudflare → サーバー間は http 通信
  • その結果、無限ループ:HTTP → HTTPS → HTTP → …

✅ 解決法:SSL 設定の整合性をとる

Step 1: Cloudflare の SSL モードを確認

Cloudflare ダッシュボード → 「SSL/TLS」→「暗号化モード」を確認し、「Full」または「Full(Strict)」 に変更
(「Flexible」ではリダイレクトループになりやすい)

Step 2: WordPress の URL を HTTPS に統一

WordPress 管理画面 → 「設定」→「一般」
次の 2つのURLがともに https:// で始まっていることを確認:

  • WordPress アドレス(URL)
  • サイトアドレス(URL)

例:

https://kiwamaqs.com/weblog

Step 3: .htaccess のリダイレクト設定を最適化

Apache(.htaccess)で HTTPS へリダイレクトする場合は、Cloudflare からの通信が HTTP であってもループしないようにする必要があります。

以下のように X-Forwarded-Proto ヘッダーを使った条件分岐を追加:

“`apacheconf
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
✅ 結果:REST API エラー解消、エディタも正常動作

設定変更後、REST API エンドポイントは正常にアクセスできるようになり、WordPress のブロックエディタもリダイレクトなしで利用可能になりました。

🔚 まとめ

項目 内容
事象 REST API にアクセスすると「Too many redirects」エラーが出る
原因 Cloudflare の「Flexible SSL」と WordPress 側の HTTPS リダイレクトが衝突
解決法 Cloudflare を「Full (Strict)」に設定し、.htaccess で X-Forwarded-Proto を考慮したリダイレクト処理を実装
Cloudflare を使うときは、SSLモードとサーバー側のHTTPS設定の整合性がとても重要です。
特に REST API や外部アプリ連携を利用しているサイトでは、こうした設定ミスが致命的なトラブルにつながるため、導入後の動作確認は必須です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.