2026年5月20日
2026年5月20日
WordPressをHTTPSに移行する方法(Mixed Content対策も)
はじめに
SSL証明書を取得した後、WordPressをHTTPからHTTPSに移行する作業が必要です。URLの変更だけでなく、コンテンツ内のHTTPリンクを全てHTTPSに書き換えないと「Mixed Content(混在コンテンツ)」エラーが発生し、ブラウザの鍵マークが表示されません。
症状・原因
- SSL証明書をインストールしたのにブラウザのアドレスバーに鍵マークが表示されない
- コンソールに「Mixed Content」エラーが出ている
- 画像やCSSがHTTPのままで読み込まれている
- 一部のページだけHTTPS化されていない
解決手順
ステップ1:移行前の準備
# ① バックアップを取る(必須)
wp db export /backups/db_before_https_$(date +%Y%m%d).sql
tar -czf /backups/files_before_https_$(date +%Y%m%d).tar.gz \
/var/www/html/wp-content/
# ② SSL証明書が正しく設置されているか確認
curl -I https://example.com 2>&1 | head -5
# HTTP/2 200 が返れば OK
# ③ 証明書の有効期限を確認
echo | openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -dates
# ④ 現在のサイトURLを確認
wp option get siteurl
wp option get home
ステップ2:WordPressのURLをHTTPSに変更する
# WordPress の URL 設定を変更
wp option update siteurl 'https://example.com'
wp option update home 'https://example.com'
# または wp-config.php に直接定義(優先度が高い)
wp config set WP_HOME 'https://example.com'
wp config set WP_SITEURL 'https://example.com'
// wp-config.php: 管理画面もSSL強制
define('FORCE_SSL_ADMIN', true);
// リバースプロキシ(Cloudflare等)経由の場合
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
ステップ3:データベース内のURLを一括置換する
# ① ドライランで変更件数を確認(実際には変更しない)
wp search-replace 'http://example.com' 'https://example.com' \
--dry-run \
--skip-columns=guid \
--report-changed-only
# ② 本番実行
wp search-replace 'http://example.com' 'https://example.com' \
--skip-columns=guid \
--report-changed-only
# ③ www ありなし両方を変換(サイト設定に合わせて)
wp search-replace 'http://www.example.com' 'https://www.example.com' \
--skip-columns=guid \
--report-changed-only
# ④ シリアライズされたデータも自動で正しく変換される
# (wp search-replace は serialize データを安全に処理する)
# ⑤ キャッシュをクリア
wp cache flush
wp rewrite flush --hard
ステップ4:Mixed Contentを検出・修正する
# ブラウザのデベロッパーツール → コンソール で確認
# Mixed Content: The page was loaded over HTTPS, but requested an insecure resource
# curl でページのHTTPリソースを検出
curl -s https://example.com/ | grep -oP 'src="http://[^"]+"|href="http://[^"]+"' | head -30
# HTTPリソースを含むURLを一覧
wp db query "
SELECT guid FROM wp_posts
WHERE guid LIKE 'http://%'
AND post_type = 'attachment'
LIMIT 50"
// functions.php: コンテンツ内の HTTP を HTTPS に強制変換
// ※ search-replace 後も残った外部リソース対策
add_filter('the_content', 'force_https_in_content');
add_filter('widget_text', 'force_https_in_content');
function force_https_in_content(string $content): string {
if (!is_ssl()) return $content;
// 自サイトの HTTP リソースを HTTPS に変換
$home_url_http = str_replace('https://', 'http://', home_url());
return str_replace($home_url_http, home_url(), $content);
}
// wp_get_attachment_url のHTTPをHTTPSに
add_filter('wp_get_attachment_url', function(string $url): string {
return set_url_scheme($url, 'https');
});
// functions.php: Output Buffer で全出力を HTTPS に変換
// 外部プラグインが出力するURLも含めて変換する場合
add_action('template_redirect', function(): void {
if (!is_ssl()) return;
ob_start(function(string $buffer): string {
$home_http = str_replace('https://', 'http://', home_url());
return str_replace(
["src='http://", 'src="http://', "href='http://", 'href="http://'],
["src='https://", 'src="https://', "href='https://", 'href="https://'],
$buffer
);
});
});
ステップ5:リダイレクトとSearch Consoleの設定
# .htaccess: HTTP → HTTPS の301リダイレクト
<IfModule mod_rewrite.c>
RewriteEngine On
# HTTP から HTTPS へリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# www なし → www あり(または逆)
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# Google Search Console に HTTPS版サイトを登録
# 1. https://example.com を新規プロパティとして追加
# 2. サイトマップを再送信
wp eval "echo get_option('siteurl') . '/sitemap.xml';"
# → Search Console → サイトマップ → 上記URLを送信
# 3. アドレス変更ツールを使用(旧HTTPプロパティから設定)
# Search Console → 設定 → アドレス変更
# Bing Webmaster Tools にも HTTPS版を追加
注意事項
--skip-columns=guidオプションをつけることで、メディアファイルのGUID(一意識別子)が変更されるのを防ぎます。GUIDは変更すべきでないカラムです- シリアライズされたデータ(プラグインの設定値など)を手動でSQLのREPLACEで書き換えると、データが破損します。必ず
wp search-replaceを使用してください - 移行後、Googleのインデックスが更新されるまで数日〜数週間かかります。301リダイレクトが正しく設定されていれば、SEOへの影響は最小限です
まとめ
HTTPS移行は①バックアップ後にwp option update siteurl/homeでURLをhttpsに変更、②wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guidでDB内URLを一括変換、③ブラウザコンソールでMixed Contentを確認・force_https_in_contentフィルターで残存HTTPを対処、④.htaccessに301リダイレクトを設定、⑤Google Search ConsoleにHTTPS版を登録・アドレス変更ツールを使用、の順で進めます。