⚠️ このような症状が出ていませんか?

混合コンテンツエラーとは

混合コンテンツエラー(Mixed Content Error)とは、HTTPSページ(暗号化された安全なページ)の中に、HTTP(暗号化されていない)で読み込まれているコンテンツが含まれている状態です。

具体例

この場合、ブラウザがセキュリティ上の理由で画像の読み込みをブロックします。

セキュリティの問題:HTTPS化の目的は通信を暗号化することです。しかし、HTTP(暗号化なし)のコンテンツが混在していると、そこから情報が漏洩する可能性があるため、ブラウザがブロックします。

主な原因

1. データベース内のURLがhttpのまま

最も多い原因です。SSL化前に投稿した記事の画像URLなどが、データベース内でhttp://のまま保存されています。

2. テーマやプラグインのハードコード

テーマファイルやプラグイン内で、URLがhttp://で直接記述されている場合があります。

3. 外部コンテンツの読み込み

外部サイトからhttp://で画像やスクリプトを読み込んでいる場合です(例: Google Fontsの古いコード)。

4. WordPress設定のURL

WordPress管理画面の「設定」→「一般」のサイトアドレスがhttp://のままになっている場合です。

5. .htaccessのリダイレクト設定不足

httpでアクセスされた際にhttpsへリダイレクトする設定がない、または不完全な場合です。

混合コンテンツの確認方法

ブラウザの開発者ツールで確認:
  1. Chrome/Edgeの場合: F12キーを押す
  2. 「Console」タブを開く
  3. 「Mixed Content」という警告が表示される
  4. どのファイルがhttp://で読み込まれているか確認できる
エラーメッセージの例:
  • "Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure image 'http://...'"
  • "このページは安全でないリソースを読み込もうとしました"

解決方法(優先度順)

WordPress設定のURLをhttpsに変更

まず基本設定を確認します。

手順:
  1. WordPress管理画面にログイン
  2. 「設定」→「一般」を開く
  3. 「WordPressアドレス(URL)」と「サイトアドレス(URL)」を確認
  4. 両方とも https:// で始まっているか確認
  5. http://になっている場合は、https://に変更
  6. 「変更を保存」をクリック
注意:URLを間違えるとサイトにアクセスできなくなります。必ず正しいURLを入力してください。間違えた場合は、wp-config.phpで修正できます。

データベース内のURLを一括置換

データベース内のhttp://をhttps://に一括変換します。

方法1: プラグインを使う(推奨)
  1. 「Better Search Replace」プラグインをインストール・有効化
  2. 「ツール」→「Better Search Replace」を開く
  3. 「検索」欄に: http://あなたのドメイン
  4. 「置換」欄に: https://あなたのドメイン
  5. すべてのテーブルを選択
  6. 「ドライラン」にチェックを入れて「検索/置換を実行」
  7. 問題なければ、「ドライラン」のチェックを外して本番実行
方法2: phpMyAdminで一括置換(上級者向け)
  1. phpMyAdminを開く
  2. 該当データベースを選択
  3. 「SQL」タブを開く
  4. 以下のSQLを実行:
UPDATE wp_posts SET post_content = 
REPLACE(post_content, 'http://あなたのドメイン', 'https://あなたのドメイン');

UPDATE wp_postmeta SET meta_value = 
REPLACE(meta_value, 'http://あなたのドメイン', 'https://あなたのドメイン');
重要:データベースを直接編集する前に、必ずバックアップを取ってください!

.htaccessでhttpをhttpsにリダイレクト

httpでアクセスされても自動的にhttpsにリダイレクトします。

手順:
  1. FTPで .htaccess ファイルをダウンロード
  2. 以下のコードを一番上に追加:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  1. 保存してアップロード
  2. http://でアクセスして、自動的にhttps://にリダイレクトされるか確認

SSL対応プラグインを使用

プラグインで自動的に混合コンテンツを修正します。

推奨プラグイン:
  • Really Simple SSL - 最も人気のあるSSL対応プラグイン
  • SSL Insecure Content Fixer - 混合コンテンツを自動修正
Really Simple SSLの使い方:
  1. プラグインをインストール・有効化
  2. 自動的にSSL設定が検出される
  3. 「はい、SSL化を有効にします」をクリック
  4. 自動的に設定が完了
注意:プラグインに頼りすぎるのではなく、根本的な原因(データベース内のURL)を修正することが理想的です。プラグインは補助として使用しましょう。

functions.phpでコンテンツを自動置換

テーマのfunctions.phpで、出力時に自動的にhttpをhttpsに変換します。

コード:
function fix_ssl_mixed_content($content) {
    $content = str_replace('http://', 'https://', $content);
    return $content;
}
add_filter('the_content', 'fix_ssl_mixed_content');
注意:この方法は応急処置です。根本的にはデータベース内のURLを修正することが推奨されます。

外部コンテンツのURLを修正

外部サイトから読み込んでいるコンテンツがhttpの場合、httpsに変更します。

よくある例:
  • Google Fonts: http://fonts.googleapis.comhttps://fonts.googleapis.com
  • jQuery CDN: http://code.jquery.comhttps://code.jquery.com
  • 外部画像: 可能であればhttps版のURLを使用
確認場所:
  • テーマのheader.php、footer.php
  • プラグインの設定画面
  • ウィジェット内のHTML

wp-config.phpで強制SSL

WordPressにSSLを強制的に使用させます。

コード:
define('FORCE_SSL_ADMIN', true);

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

wp-config.phpの「/* 編集が必要なのはここまでです ! 」の直前に追加します。

Content Security Policyを設定(上級者向け)

HTTPSでないコンテンツを自動的にHTTPSにアップグレードします。

.htaccessに追加:
Header always set Content-Security-Policy "upgrade-insecure-requests"

この設定により、httpで指定されたコンテンツが自動的にhttpsで読み込まれます。

SSL証明書の確認

そもそもSSL証明書が正しくインストールされているか確認しましょう。

確認方法:
  1. SSL Server Test にアクセス
  2. 自分のドメインを入力して「Submit」
  3. 「A」または「A+」評価なら問題なし
  4. それ以下の場合は、SSL証明書に問題がある可能性

予防策

1. 最初からhttpsでサイトを構築

2. 相対URLを使用

3. 外部コンテンツはhttps対応のものを選ぶ

4. 定期的にチェック

よくある質問

Q1. SSL化したのに鍵マークが表示されません

A. 混合コンテンツが残っている可能性が高いです。ブラウザのDevToolsを開いて「Mixed Content」エラーがないか確認してください。

Q2. Really Simple SSLで解決しない場合は?

A. データベース内のURLを直接置換する必要があります。「Better Search Replace」プラグインを使って、http://をhttps://に一括変換してください。

Q3. 外部サイトの画像がhttpしかありません

A. 外部画像は自分のサーバーにダウンロードして使用するか、httpsに対応している別の画像サービスを使用してください。

Q4. SSL証明書は無料で取得できますか?

A. はい。Let's Encryptという無料のSSL証明書があり、多くのレンタルサーバーで簡単に導入できます。エックスサーバー、ConoHa、ロリポップなどは無料SSL証明書を提供しています。

Q5. .htaccessの設定を間違えるとどうなりますか?

A. サイトにアクセスできなくなる可能性があります。必ず編集前にバックアップを取ってください。問題が発生したら、バックアップから復元できます。

まとめ

混合コンテンツエラー解決のチェックリスト

  1. ✓ WordPress設定のURLがhttps://になっているか確認
  2. ✓ Better Search Replaceでデータベース内のURLを一括置換
  3. ✓ .htaccessでhttpからhttpsへのリダイレクトを設定
  4. ✓ Really Simple SSLプラグインをインストール
  5. ✓ ブラウザのDevToolsで混合コンテンツエラーがないか確認
  6. ✓ 外部コンテンツのURLをhttpsに変更
  7. ✓ SSL証明書が正しくインストールされているか確認

混合コンテンツエラーは、SSL化後によく発生するトラブルですが、データベース内のURLを正しく置換すれば解決できます。このページで紹介した方法を順番に試してみてください。

関連ページ