すべてのデプロイガイド デプロイ

HTTPからHTTPSへリダイレクトする方法

SSL証明書をインストールしたら、すべてのHTTPトラフィックをHTTPSにリダイレクトする必要があります。リダイレクトがないと、http://yourdomain.comにアクセスする訪問者は、HTTPSが利用可能であっても暗号化された接続を使用しません。

検索エンジンがすべてのランキングシグナルをHTTPS URLに転送するよう、301(パーマネント)リダイレクトを使用してください。

Nginx

ポート80ですべてをリダイレクトする別のserverブロックを追加します:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

これにより完全なURLパスが保持されます:http://example.com/page?q=1https://example.com/page?q=1

編集後、テストしてリロードします:

sudo nginx -t && sudo systemctl reload nginx

Apache

オプション1: VirtualHostリダイレクト(推奨)

Apache設定に以下を追加します:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com/
</VirtualHost>

オプション2: .htaccess(共有ホスティング)

VirtualHost設定にアクセスできない場合(共有ホスティング)、サイトの.htaccessに追加します:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

mod_rewriteが有効になっている必要があります。

変更後:

sudo apachectl configtest && sudo systemctl reload apache2

リダイレクトの確認

# 301とLocation: https://...が返されるはず
curl -I http://yourdomain.com

期待される出力:

HTTP/1.1 301 Moved Permanently
Location: https://yourdomain.com/

HSTS: 二重のロック

リダイレクトが動作することを確認したら、HSTS(HTTP Strict Transport Security)を追加します。これにより、ユーザーがhttp://と入力しても、ブラウザに常にHTTPSを使用するよう指示します:

Nginx:

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;

Apache:

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

テスト用に短いmax-age(例:300秒)から始め、すべてが正常に動作することを確認してから2年(63072000)に増やしてください。

注意: 長いmax-ageでHSTSを有効にすると、HTTPSを削除してもブラウザはHTTP接続を拒否します。長い期間を設定する前に、HTTPSのセットアップが安定していることを確認してください。

よくあるリダイレクトパターン

wwwを非wwwにリダイレクト + HTTPS

# Nginx: www → 非www, HTTP + HTTPS → HTTPS
server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;
    ssl_certificate     /etc/ssl/fullchain.pem;
    ssl_certificate_key /etc/ssl/privkey.pem;
    return 301 https://example.com$request_uri;
}

非wwwをwwwにリダイレクト + HTTPS

server {
    listen 80;
    listen 443 ssl;
    server_name example.com;
    ssl_certificate     /etc/ssl/fullchain.pem;
    ssl_certificate_key /etc/ssl/privkey.pem;
    return 301 https://www.example.com$request_uri;
}

古いドメイン全体をリダイレクト

server {
    listen 80;
    listen 443 ssl;
    server_name olddomain.com www.olddomain.com;
    ssl_certificate     /etc/ssl/old-fullchain.pem;
    ssl_certificate_key /etc/ssl/old-privkey.pem;
    return 301 https://newdomain.com$request_uri;
}

古いドメインにも有効なSSL証明書が必要です。ブラウザはリダイレクトを受け取る前にHTTPSを確立する必要があるためです。両方のドメインをカバーするSAN証明書を使用するか、古いドメイン用に別の証明書を使用してください。

トラブルシューティング

リダイレクトループ(ERR_TOO_MANY_REDIRECTS)

これは通常、HTTPSサーバーブロックもHTTPSへリダイレクトしていることを意味します。ポート80のブロックのみがリダイレクトし、ポート443のブロックは通常通りコンテンツを配信するようにしてください。

もう1つの原因:ロードバランサーまたはプロキシ(Cloudflare、AWS ALB)がSSLを終端し、サーバーにHTTPを転送しています。サーバーはHTTPを検知してリダイレクトします。X-Forwarded-Protoヘッダーを確認して修正してください:

# プロキシ/ロードバランサーの背後
if ($http_x_forwarded_proto = "http") {
    return 301 https://$host$request_uri;
}

検索エンジンにキャッシュされた古いHTTP URL

リダイレクトを設定したら、Googleに変更を通知してください:

  1. <link rel="canonical">https://に更新する
  2. サイトマップのURLをhttps://に更新する
  3. Google Search ConsoleでHTTPSプロパティを追加する

Googleは301リダイレクトをたどりながら、インデックスされたURLを徐々に更新します。

よくある質問

wwwから非www(またはその逆)へのリダイレクトも同時に行うべきですか?

はい。1つの正規形式を選び、もう1つをリダイレクトしてください。これにより検索エンジンでの重複コンテンツを避けられます:

# wwwを非wwwにリダイレクト(Nginx)
server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}

リダイレクトはSEOに影響しますか?

301リダイレクトはランキングシグナルを宛先URLに転送します。GoogleはHTTPからHTTPSへの移行に301リダイレクトを推奨しています。小さな一時的な変動はあるかもしれませんが、HTTPSのランキングシグナルにより長期的なSEOは向上します。

リダイレクト後の混合コンテンツはどうなりますか?

リダイレクトはページURLを処理しますが、HTMLがリソース(画像、スクリプト、CSS)をhttp:// URLで参照していると、ブラウザがそれらをブロックしたり警告を表示したりします。混合コンテンツ修正ガイドをご覧ください。

リダイレクトが正しく動作しているかテストするにはどうすればいいですか?

# リダイレクトチェーンを確認
curl -ILs http://yourdomain.com | grep -E '^HTTP|^Location'

期待される出力:

HTTP/1.1 301 Moved Permanently
Location: https://yourdomain.com/
HTTP/2 200

最初のレスポンスはHTTPSのLocationを含む301で、最終レスポンスは200であるべきです。

DNSレベルとサーバーレベル、どちらでリダイレクトすべきですか?

サーバーレベル(Nginx/Apache設定または.htaccess)です。DNSレベルのリダイレクト(CloudflareのPage Rulesなど)は動作しますが、ネットワークホップが追加され、リダイレクト動作の制御が少なくなります。サーバーレベルのリダイレクトの方が高速で信頼性が高いです。

関連記事

デプロイ 2026-05-08
NginxにSSL証明書をインストールする方法
NginxにSSL証明書をインストールするステップバイステップガイド。ファイルアップロード、完全なサーバーブロック設定、TLSベストプラクティス、HTTP/2、HSTS、リダイレクト設定、テスト、6つの一般的なエラーのトラブルシューティングを解説します。
デプロイ 2026-05-08
ApacheにSSL証明書をインストールする方法
mod_sslを使用したApacheへのSSL証明書インストールのステップバイステップガイド。ファイルアップロード、VirtualHost設定、TLSベストプラクティス、HSTS、HTTPリダイレクト、5つの一般的なエラーのトラブルシューティングを解説します。
はじめに 2026-05-08
無料SSL証明書の取得方法(ステップバイステップガイド)
Let's Encryptから5分で無料のSSL証明書を取得。ソフトウェアのインストール不要、アカウント作成不要。4つの方法、両方のチャレンジタイプ、6つのプラットフォームへのインストール、トラブルシューティングを網羅した完全ガイドです。
ブラウザで無料 SSL 証明書を取得
インストール不要、アカウント不要。秘密鍵は常にデバイスに残ります。
証明書を取得