【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)
例:
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 や外部アプリ連携を利用しているサイトでは、こうした設定ミスが致命的なトラブルにつながるため、導入後の動作確認は必須です。