WordPressとHTTPSは通常スムーズに動作しますが、問題が発生すると混乱を招くエラーが出ることがあります。このガイドでは、すべての一般的なWordPress SSL問題とその修正方法を解説します。
初期SSL設定についてはWordPress SSLインストールガイドをご覧ください。
ERR_TOO_MANY_REDIRECTS(リダイレクトループ)
WordPressのSSL問題で最も多いものです。 ブラウザに「このページは正しく動作していません - リダイレクトの回数が多すぎます」と表示されます。
原因1: プロキシの背後(Cloudflare、ロードバランサー)
プロキシがSSLを終端し、WordPressにHTTPを転送します。WordPressはHTTPを検知してHTTPSにリダイレクトします。プロキシが再びHTTPを転送します。無限ループです。
修正 — wp-config.phpに追加(/* That's all, stop editing! */の前):
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
Cloudflareを使用している場合: SSLモードを「Full」または「Full (Strict)」に設定してください。「Flexible」は絶対に使わないでください。
原因2: リダイレクトの競合
.htaccessがHTTPSにリダイレクトし、さらにWordPressプラグイン(Really Simple SSLなど)もリダイレクトし、さらにサーバー設定もリダイレクトしています。トリプルリダイレクト = ループ。
修正: リダイレクトのソースを1つだけにしてください。推奨:.htaccessでのリダイレクト、プラグインのリダイレクトは無効化。
原因3: WordPress URLの不一致
Settings → Generalにhttp://と表示されていますが、サーバーがHTTPSを強制しています。
修正 — wp-config.phpで更新:
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');
混合コンテンツ警告(パドロックが壊れている/表示されない)
HTTPSは動作していますが、パドロックアイコンに警告が表示されるか、一部のリソースが読み込まれません。
原因: ページが画像、スクリプト、CSSをhttp:// URLで参照しています。通常は移行前にデータベースに保存されたものです。
クイックフィックス: Really Simple SSLプラグイン
Really Simple SSLをインストールして有効化します。http:// URLを動的に書き換え、upgrade-insecure-requests CSPヘッダーを追加します。
恒久的な修正: データベースの一括置換
# WP-CLI(推奨)
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables --precise
# まずドライランで変更内容を確認
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables --dry-run
またはGUIアプローチとしてBetter Search Replaceプラグインを使用してください。
以下も確認してください:
- テーマファイル(
header.php、footer.php)のハードコードされたhttp://URL - ウィジェットのコンテンツ(テキストウィジェット、カスタムHTML)
- カスタマイザー内のカスタムCSS
- プラグイン設定(ソーシャルシェア画像、ロゴURL)
HTTPS有効化後の白い画面 / 500エラー
原因1: .htaccessの競合
HTTPSリダイレクトルールがWordPressのパーマリンクルールと競合しています。
修正: .htaccessをリセットします:
# 現在のファイルをリネーム
mv .htaccess .htaccess.backup
# WordPressが再生成します
# Settings → Permalinks → Save(変更不要)に移動
その後、先頭にHTTPSリダイレクトだけを再追加します:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
原因2: プラグインの競合
セキュリティまたはキャッシュプラグインがHTTPS変更と競合している可能性があります。
修正: FTP経由ですべてのプラグインを無効化します:
# pluginsディレクトリをリネーム
mv wp-content/plugins wp-content/plugins.bak
サイトが動作すれば、元に戻してプラグインを1つずつ有効化し、競合を見つけてください。
HTTPS後にwp-adminにログインできない
原因: Cookieドメインの不一致
http://で設定された古いCookieはhttps://では動作しません。
修正:
// wp-config.phpに追加
define('FORCE_SSL_ADMIN', true);
define('COOKIE_DOMAIN', 'yourdomain.com');
その後、ドメインのブラウザCookieをクリアするか、シークレットウィンドウで試してください。
SSL証明書をインストールしたがWordPressがまだHTTPを表示する
原因: WordPressがHTTPSを認識していない
証明書はサーバーにありますが、WordPressのURL設定がまだhttp://になっています。
修正: 両方のURLを更新してください:
- wp-adminにアクセスできる場合: Settings → General → 両方のURLを
https://に変更 - wp-adminにアクセスできない場合:
wp-config.phpに追加:define('WP_HOME', 'https://yourdomain.com'); define('WP_SITEURL', 'https://yourdomain.com'); - wp-config.phpが効かない場合: データベースを直接更新:
UPDATE wp_options SET option_value = 'https://yourdomain.com' WHERE option_name IN ('siteurl', 'home');
Elementor / ページビルダーでHTTPS後にレイアウトが崩れる
ページビルダーは投稿メタに絶対URLを保存しています。HTTPSへの移行後、以下を実行してください:
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables
Elementorの場合は、さらにElementor → Tools → Replace URLに移動し、http://からhttps://に更新してください。
WooCommerceの決済がHTTPSで動作しない
原因1: 混合コンテンツが決済スクリプトをブロック
Stripe、PayPal、その他の決済ゲートウェイはHTTPSを必要とし、混合コンテンツでは読み込みを拒否します。
修正: データベースの一括置換(上記)を実行し、WooCommerce → Settings → Paymentsでhttp://参照がないか確認してください。
原因2: Force SSL checkoutの設定
WooCommerceには「Force secure checkout」オプションがあり、サイト全体のHTTPSと競合する場合があります。
修正: サイト全体がHTTPSの場合、このオプションは不要です。WooCommerce → Settings → Advanced → Page setupでチェックを外してください。
よくある質問
Really Simple SSLプラグインは必要ですか?
HTTP→HTTPSの移行を容易にします(特に混合コンテンツ)が、必須ではありません。データベースの一括置換を実行し、.htaccessでリダイレクトを設定すれば、プラグインは不要です。プラグインはページ読み込みのたびにURLを動的に書き換えるため、わずかなオーバーヘッドが加わります。
WordPress URLは証明書のインストール前に変更すべきですか、後ですか?
後です。 まず証明書をインストールしてHTTPSが動作することを確認してから、WordPress URLを更新してください。証明書の準備ができる前にURLを更新すると、WordPressがHTTPSを配信しようとしても配信できず、ロックアウトされる可能性があります。
キャッシュプラグインが古いHTTPバージョンを配信する
移行後にすべてのキャッシュをクリアしてください:
- WP Super Cache / W3 Total Cache / LiteSpeed Cache: プラグイン設定からキャッシュをクリア
- Cloudflare: Purge Everything
- サーバーサイド(Varnish、Nginxキャッシュ): キャッシュをクリアまたはサービスを再起動
数か月前に移行したのにGoogleがまだHTTP URLを表示する
Google Search ConsoleでHTTPSサイトマップを送信してください。すべてのページの<link rel="canonical">タグがhttps://を指していることを確認してください。Googleの再インデックスには数週間かかる場合があります。301リダイレクトは役立ちますが即時ではありません。