2026年5月20日

2026年5月20日

WordPressのHTTPSへのリダイレクトを設定する方法

はじめに

SSL証明書を取得したのにhttpでアクセスするとhttpsに転送されない、一部のページだけhttpのままになっている、リダイレクトループ(ERR_TOO_MANY_REDIRECTS)が発生する。HTTPSへのリダイレクト設定は環境によって方法が異なり、Cloudflareなどのプロキシを挟む場合は特別な対処が必要です。

症状・原因

HTTPSリダイレクトの問題:

  • リダイレクト未設定:SSL証明書はあるがリダイレクトルールがない
  • リダイレクトループ:WordPressとサーバーの両方でリダイレクトが二重に起きている
  • Cloudflare環境の問題:プロキシがHTTPS変数を正しく渡していない
  • wp-config.phpとサーバー設定の競合:両方でリダイレクトを設定している

解決手順

ステップ1:.htaccessでHTTPSリダイレクトを設定する(Apache)

# .htaccess — WordPress設定の上に追加
<IfModule mod_rewrite.c>
RewriteEngine On

# HTTPSへの301リダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# ↓ この後にWordPressのデフォルトルールが続く
# BEGIN WordPress

ステップ2:wp-config.phpでHTTPS強制する

// wp-config.php — HTTPS強制とSSL管理画面設定
define('FORCE_SSL_ADMIN', true);

// WP_HOME・WP_SITEURLをhttpsに統一
define('WP_HOME', 'https://yoursite.com');
define('WP_SITEURL', 'https://yoursite.com');

ステップ3:Cloudflare環境でのリダイレクトループ対策

CloudflareなどのプロキシではサーバーへのリクエストがHTTPになるため、WordPressがHTTPと判断してリダイレクトループが発生します。

// wp-config.php — Cloudflare環境でのSSL検出
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 
    $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

// この後に FORCE_SSL_ADMIN を設定
define('FORCE_SSL_ADMIN', true);

ステップ4:Nginxでの設定

# Nginx設定 — HTTPをHTTPSにリダイレクト
server {
    listen 80;
    server_name yoursite.com www.yoursite.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name yoursite.com www.yoursite.com;
    
    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    
    # WordPressの設定を続ける
}

ステップ5:WP_HOMEとWP_SITEURLをhttpsに変更する

# WP-CLIでURLを一括変換
wp option update siteurl 'https://yoursite.com'
wp option update home 'https://yoursite.com'

# DB内のhttp URLをhttpsに一括置換
wp search-replace 'http://yoursite.com' 'https://yoursite.com' --skip-columns=guid

ステップ6:Mixed Contentを解消する

// functions.php — 内部URLをhttpsに強制
add_filter('wp_get_attachment_url', function($url) {
    return set_url_scheme($url, 'https');
});

add_filter('the_content', function($content) {
    $home = get_option('home');
    $content = str_replace(
        'http://' . parse_url($home, PHP_URL_HOST),
        'https://' . parse_url($home, PHP_URL_HOST),
        $content
    );
    return $content;
});

ステップ7:リダイレクトのテスト

# curlでリダイレクトを確認
curl -I http://yoursite.com/
# Location: https://yoursite.com/ と表示されれば正常

# リダイレクトループの確認
curl -L --max-redirs 5 -I http://yoursite.com/
# Too many redirects なら設定を見直す

注意事項

  • リダイレクトループが発生したらまず.htaccessのRewriteCondを見直し、%{HTTPS} offの条件が正しいか確認してください。
  • CDNやプロキシを使用している場合はX-Forwarded-Protoヘッダーの処理を必ず追加してください。

まとめ

HTTPSリダイレクトは.htaccessへのRewriteCond %{HTTPS} offの追加とwp-config.phpのURL設定をhttpsに統一することで実現します。Cloudflare環境ではX-Forwarded-Protoの処理が必須です。wp search-replaceでDB内のURLも一括変換して完全移行しましょう。関連記事:Mixed Contentエラーの解決方法www有り・なしのリダイレクト設定

お気軽にご相談ください

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