http から https への転送は、WordPress・プラグイン・Cloudflare のどこで設定するのが安全か

Cloudflare を使っているサイトでは、まず Cloudflare の「常に HTTPS を使用」を設定します。

公開日:2026/10/12

サイトを https にしたのに、アドレス欄に「http://」と打つと、鍵マークの無いままページが開いてしまうことがあります。
この状態を直す方法は、WordPress の設定・プラグイン・サーバーの設定・Cloudflare の設定と、いくつもあります。
本記事では、WordPress をお使いの方からよくいただくご質問に答える形で、どこで設定するのが安全か、どの順番で行うかを説明いたします。

結論:Cloudflare を使っているサイトで、安全な順番

  1. Cloudflare の「常に HTTPS を使用」(Always Use HTTPS)を有効にします。http で来たアクセスを、サーバーへ届く前に Cloudflare が https へ転送します。サーバーの設定に触れないため、サイトが止まる危険が最も小さい方法です
  2. WordPress のアドレス(URL)とサイトアドレス(URL)を https にそろえます。転送の設定ではありませんが、WordPress が書き出すリンクと画像のアドレスを https にするために必要です
  3. サーバーに有効な SSL 証明書を置き、暗号化モードを「Full (strict)」へ上げます。Cloudflare からサーバーまでの区間も暗号化されます
  4. サーバー側の転送と HSTS は、3. の後に足します。Cloudflare を外しても https が続く、永続的な守りとして働きます

https 化のためのプラグインは、この順番では要りません。

WordPress のアドレスを https にすれば済むのでは?

WordPress の「設定」→「一般」にある WordPress アドレス(URL)とサイトアドレス(URL)を https にすると、WordPress が作るリンク・画像・管理画面のアドレスが https に変わります。
WordPress の公式の文書も、この2つを https にそろえる方法を説明しています。

ただし、これは「http で来た人を https へ送る」設定ではありません。
画像・CSS などの WordPress を通らないファイルや、WordPress 以外のページは、http のまま開けます。
また、Cloudflare の暗号化モードが「Flexible」のままだと、WordPress には常に http で届くため、WordPress が https へ転送し続け、ページが開かなくなることがあります(コラム「「リダイレクトが繰り返されました」で WordPress が開けなくなる理由」)。

アドレスを https にそろえることは必要ですが、これだけでは足りません。

https 化のプラグインで足りるのでは?

https へ転送するプラグインは、WordPress の中で転送とアドレスの書き換えを行います。
手軽ですが、次の点に注意が必要です。

  • WordPress が動いてから転送するため、画像などの WordPress を通らないファイルには効きません
  • プラグインの多くは、サーバーの設定ファイル(.htaccess)にも転送を書き込みます。Flexible の Cloudflare と組み合わせると、転送の繰り返しを引き起こします
  • プラグインを止めた・更新に失敗したときに、転送も止まります

Cloudflare の設定とサーバーの設定で同じことができるため、プラグインは使わずに済みます。プラグインを少なく保つと、更新の手間と、不具合の入口も減ります。

サーバーの設定(.htaccess)で転送するのはどうか

サーバー会社のマニュアルには、.htaccess に「HTTPS でないアクセスは https へ転送する」という数行を書く方法が載っています。
Cloudflare を使っていないサイトでは、これが標準の方法です。

Cloudflare を Flexible で使っているサイトでは、この方法は使えません。
Cloudflare からサーバーへは常に http で届くため、サーバーは毎回「https へ転送せよ」と返し、転送が繰り返されます。
Cloudflare の公式の文書も、サーバー側で転送を行うと転送の繰り返しが起きうるとして、サーバー側での転送を勧めていません。

また、.htaccess は1行の誤りでサイト全体がエラーを返します。
弊社が自社のサイトで .htaccess に転送の数行を足したところ、同じサーバーのすべてのサイトが1分足らずの間エラー(500)を返し、すぐに元の .htaccess へ戻しました。
.htaccess を変えるときは、変更前の控えを取り、試験用の場所で試してから本番へ入れることが重要です。

Cloudflare だけでよいのか、両方か

Cloudflare の「常に HTTPS を使用」は、そのドメインのすべてのサブドメインに一度に効きます。
サイトの一部だけが https に対応している場合は、Cloudflare の公式の文書のとおり、この設定は使わず、リダイレクトルール(Single Redirects)で対象を絞って転送します。
有効にする前に、すべてのサブドメインが https で開けることを確認いたします。

Cloudflare の設定は、Cloudflare を外すと効かなくなります。
Cloudflare を外しても https を続けるには、サーバーに有効な証明書を置き、サーバー側の転送と HSTS を足す必要があります。
この段階では暗号化モードが Full (strict) になっているため、サーバー側で転送しても繰り返しは起きません。

つまり、すぐに行うのは Cloudflare、永続的な守りはサーバーとの両方です。順番を逆にすると、サイトが止まる危険があります。

HSTS は最後に、短い有効期間から

HSTS は、一度 https で訪れたブラウザーに「次からは最初から https で接続せよ」と覚えさせる仕組みです。
http の段階で通信を盗み見られる危険も減らせます。

一方で、ブラウザーが設定を覚えている間は、取り消しても元に戻せません。
すべてのサブドメインが https で開け、サーバーの証明書も有効になってから、短い有効期間で始めます(コラム「HSTS を入れる前に知っておくこと」)。

よくある失敗

失敗原因防ぎ方
転送の繰り返し(ERR_TOO_MANY_REDIRECTS)Flexible のまま、サーバー・WordPress・プラグインでも https へ転送している転送は Cloudflare の1か所にする。サーバー側で転送するのは Full (strict) にしてから
混在コンテンツ(鍵マークに警告が出る)https のページの中に、http の画像・CSS・JavaScript のアドレスが残っているWordPress のアドレスを https にそろえ、本文の古いアドレスを置き換える。Cloudflare の「HTTPS の自動書き換え」(Automatic HTTPS Rewrites)も役に立つ
一部のサブドメインが開かない「常に HTTPS を使用」がすべてのサブドメインに効くが、https に対応していないサブドメインがある有効にする前に、すべてのサブドメインを https で確認する。対応していないものがあれば、リダイレクトルールで対象を絞る
サイト全体のエラー(500).htaccess の書き間違い変更前の控えを取り、試験用の場所で試してから本番へ入れる

弊社の自社サイトでの実施の記録

2026/10/12 に、弊社の自社ドメインで「常に HTTPS を使用」を有効にしました。

  • 変更前:暗号化モードは Flexible。Cloudflare を通しているサブドメイン13件のうち、http で開くと https へ転送されないものが11件ありました
  • 確認したこと:変更の前に、13件すべてが https で開けること(応答200、または内部の転送)を確認しました
  • 変更後:13件すべてが、http で開くと1回の転送(301)で https へ移り、最後は正常に表示されました。転送の繰り返しは0件でした
  • 主なページの中の http のアドレス(混在コンテンツの原因)は0件でした

同じ確認で、サーバーに有効な証明書が置かれているサブドメインは13件中1件だけでした。
このまま Full (strict) へ上げると残りの12件が開かなくなるため、暗号化モードは Flexible のままとし、サーバーの証明書を順に整えてから上げる計画です。

出典

  • Cloudflare「Always Use HTTPS」 https://developers.cloudflare.com/ssl/edge-certificates/additional-options/always-use-https/(2026/10/12 確認)
  • Cloudflare「Single Redirects」 https://developers.cloudflare.com/rules/url-forwarding/single-redirects/(2026/10/12 確認)
  • Cloudflare「ERR_TOO_MANY_REDIRECTS」 https://developers.cloudflare.com/ssl/troubleshooting/too-many-redirects/(2026/10/12 確認)
  • Cloudflare「Full (strict)」 https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full-strict/(2026/10/12 確認)
  • Cloudflare「Automatic HTTPS Rewrites」 https://developers.cloudflare.com/ssl/edge-certificates/additional-options/automatic-https-rewrites/(2026/10/12 確認)
  • WordPress Developer Resources「HTTPS」 https://developer.wordpress.org/advanced-administration/security/https/(2026/10/12 確認)
  • エックスサーバー「Webサイトの常時SSL化」 https://www.xserver.ne.jp/manual/man_server_fullssl.php(2026/10/12 確認)
  • MDN「Strict-Transport-Security」 https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security(2026/10/12 確認)