2026年8月12日

2026年8月12日

WordPressのHTTPS混在コンテンツ(Mixed Content)を一括で解消する方法

HTTPS化したのにブラウザの鍵マークに警告が出る、画像やCSSが読み込まれないといった症状は、ページの中に http:// で始まるURLが残っている「混在コンテンツ(Mixed Content)」が原因です。1つずつ直すのではなく、WordPressのURL設定を整え、データベース内のURLをまとめて置き換え、残りをテーマやサーバー設定で潰す、という順番で進めると効率よく解消できます。この記事では、混在コンテンツの見つけ方から、一括置換の安全な手順、置換で直らない箇所の対処までを説明します。

混在コンテンツとは何か

HTTPSで表示しているページが、画像・CSS・JavaScript・iframe などを http:// で読み込もうとしている状態を指します。ブラウザは安全でない通信を防ぐため、次のように扱います。

  • 画像・動画・音声:自動で https:// に切り替えて読み込みを試みます。相手が HTTPS に対応していなければ表示されません。
  • JavaScript・CSS・iframe:読み込みをブロックします。レイアウト崩れや、フォーム・スライダーなどが動かない原因になります。

つまり、警告が出ているだけでなく、実際に機能が壊れている可能性があります。

作業前の準備

一括置換はデータベースを書き換える作業なので、事前にファイルとデータベースの両方をバックアップしてください。可能ならステージング環境で先に試すと安全です。

あわせて、HTTPS そのものが正しく動いていることを確認します。https:// でトップページを開き、証明書のエラーが出ないことが前提です。証明書に問題がある状態では、URLを置き換えてもサイトが表示できなくなります。

混在コンテンツを見つける

ブラウザの開発者ツールで確認する

問題のページを開き、開発者ツール(Windows は F12、Mac は Command+Option+I)の「コンソール」を表示します。混在コンテンツがあると、次のような警告が出ます。

Mixed Content: The page at 'https://example.com/sample/' was loaded over HTTPS, but requested an insecure image 'http://example.com/wp-content/uploads/2020/05/photo.jpg'.

「ネットワーク」タブで http:// を含むリクエストを探す方法もあります。警告に出てくるURLのドメインを見て、次のように分類しておくと、この後の作業がはっきりします。

  • 自サイトのURL(http://example.com/...):データベース置換で直せる可能性が高い
  • 外部サイトのURL:埋め込みコードやテーマの設定を個別に直す必要がある

サイトヘルスを確認する

管理画面の「ツール」→「サイトヘルス」で、HTTPS に関する項目を確認します。サイトがHTTPSに対応しているのに設定がHTTPのままの場合は、その旨が表示され、条件がそろっていれば HTTPS への切り替えを行うボタンが表示されることもあります。

ステップ1:WordPressのURL設定を https にする

「設定」→「一般」の「WordPress アドレス (URL)」と「サイトアドレス (URL)」を、どちらも https:// に変更して保存します。保存するとログアウトされるので、https:// のURLでログインし直してください。

これらの欄がグレーで変更できない場合は、wp-config.php で WP_HOME と WP_SITEURL が定義されています。その場合は wp-config.php 側の値を https:// に書き換えます。

ステップ2:データベース内のURLを一括置換する

投稿本文、カスタムフィールド、ウィジェット、テーマの設定などに保存された http:// のURLを、まとめて置き換えます。WordPressのデータベースには「シリアライズ」という形式で保存されたデータがあり、文字数がずれると壊れてしまいます。phpMyAdmin のSQLで単純に置換するのではなく、シリアライズに対応したツールを使ってください。

WP-CLIを使う場合

最初に --dry-run で、何件置き換わるかだけを確認します。

wp search-replace 'http://example.com' 'https://example.com' --all-tables --skip-columns=guid --dry-run

件数に問題がなければ、--dry-run を外して実行します。

wp search-replace 'http://example.com' 'https://example.com' --all-tables --skip-columns=guid

guid 列は投稿の識別子として使われるもので、RSSリーダーなどが既読判定に使うため、置換の対象から外すのが一般的です。www あり・なしの両方のURLが混在しているサイトでは、それぞれについて置換を行います。

プラグインを使う場合

SSHが使えない環境では、Better Search Replace などのプラグインで同じ作業ができます。置換元・置換先とテーブルを指定し、まず試験実行(ドライラン)で件数を確認してから本番の実行を行います。作業が終わったら、プラグインは停止・削除しておくと安全です。

ページビルダーのデータに注意する

Elementor などのページビルダーは、ページの内容を独自の形式で保存しており、URL中の / が \/ のようにエスケープされていることがあります。この場合、通常の置換では見つかりません。Elementor には管理画面のツールにURL置換の機能があるので、そちらも実行し、最後にCSSの再生成を行います。

ステップ3:置換で直らない箇所を直す

データベースを置換しても警告が残る場合、URLがデータベース以外に書かれています。

  • テーマのファイル:header.php や style.css に http:// が直接書かれていることがあります。SSHが使えるなら grep -rn "http://example.com" wp-content/themes/ で探せます。子テーマを使って修正すると、テーマ更新で元に戻りません。
  • 外部サービスの埋め込み:古い埋め込みコードが http:// になっている場合は、サービス側で新しい埋め込みコードを取得し直します。HTTPS に対応していないサービスは、残念ながら置き換えるか削除するしかありません。
  • 追加CSS:「外観」→「カスタマイズ」の「追加 CSS」で、背景画像などを http:// で指定していないかを確認します。

ステップ4:サーバーとプロキシの設定を確認する

Cloudflare などのCDNやロードバランサーを経由している環境では、ブラウザとCDNの間はHTTPSでも、CDNとサーバーの間がHTTPになっていることがあります。この場合、WordPressは自分がHTTPで表示されていると判断し、http:// のURLを出力してしまいます。プロキシが X-Forwarded-Proto ヘッダーを送っているなら、wp-config.php の上の方に次のように書くと、WordPressがHTTPSとして動作します。

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

この記述は、信頼できるプロキシの背後にあるサーバーでだけ使ってください。CDN側のSSL設定で、サーバーまでの通信も暗号化する方式を選べるなら、そちらも見直します。

あわせて、http:// へのアクセスを https:// へ301リダイレクトする設定が入っているかも確認します。.htaccess やサーバーのコントロールパネルで設定できますが、方法はサーバーによって異なります。

補助的な方法

すぐに全箇所を直せない場合、Really Simple Security(旧 Really Simple SSL)などのプラグインで、出力されるHTMLの http:// を表示のたびに書き換える方法もあります。また、HTTPヘッダーで Content-Security-Policy: upgrade-insecure-requests を送ると、対応ブラウザは http:// のリソースを https:// に読み替えて取得します。

ただし、どちらもデータベースの中身は http:// のままです。プラグインを止めたり、ヘッダーが外れたりすると症状が戻るため、一時的な対策と考え、根本的にはステップ2の置換で直しておくのが望ましいです(プラグイン名や機能は2026年10月現在のものです)。

仕上げの確認

最後に、キャッシュプラグインとCDNのキャッシュを削除し、主要なページ(トップ、投稿、固定ページ、お問い合わせフォームのあるページ)を開いて、コンソールに Mixed Content の警告が出ないこと、鍵マークに警告が付かないことを確認します。Google Search Console を使っている場合は、https:// のURLでプロパティが登録されているかも確認しておきます。

まとめ

  • 混在コンテンツは、HTTPSのページ内に残った http:// のURLが原因で、JavaScriptやCSSはブロックされ機能が壊れることがあります。
  • バックアップを取り、開発者ツールのコンソールで警告のURLを洗い出してから作業します。
  • 「設定」→「一般」のURLを https にし、WP-CLI の wp search-replace や Better Search Replace でデータベースを一括置換します。ページビルダーのデータは専用の置換機能も使います。
  • テーマファイル、外部埋め込み、プロキシ環境の設定など、置換で直らない箇所を個別に直し、キャッシュを消して確認します。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲