httpからhttpsへ正しく転送する設定と確認
常時 SSL 化は証明書を入れるだけでは終わりません。.htaccess での 301 転送、canonical と内部リンクの書き換え、混在コンテンツの見つけ方、HSTS を付ける順番と、設定後に確認する4つの項目を説明します。
転送だけでは終わらない理由
証明書を入れて https で開けるようになっても、http の URL が残っていれば、閲覧者も検索エンジンもその古い URL を使い続けます。常時 SSL 化とは「https で開ける」ことではなく、「http では開けない(必ず https に行く)」状態を作ることです。そのためには、転送、canonical、混在コンテンツの解消、HSTS の4つがそろう必要があります。
.htaccess による 301 転送
Apache 系のレンタルサーバーでは、サイトのルートの .htaccess に次を書きます。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
302 ではなく 301 を使うのは、検索エンジンに評価の移転を伝えるためです。www あり・なしの統一も同時に行うなら、2段階の転送(http://example.com から https://example.com、そこから https://www.example.com)にならないよう、1つの規則で最終形に飛ばします。.htaccess生成で「https化」と「www統一」を同時に選ぶと、1回で済む形が出ます。
WordPress では、.htaccess に加えて「設定 > 一般」の WordPress アドレスとサイトアドレスを https に変えておかないと、本体が http に転送し返してループします。
canonical と内部リンク
<link rel="canonical"> が http のままだと、転送しているにもかかわらず、検索エンジンが http を正規 URL とみなすことがあります。テーマやプラグインが出力している canonical を確認し、https にそろえてください。
内部リンクと画像の URL も、データベースに http:// で保存されていれば転送に頼ることになり、1ページで何十回もの転送が発生します。WordPress なら検索置換のプラグインや WP-CLI の search-replace で、データベース内の http://example.com を https://example.com に一括で書き換えます。
混在コンテンツ
https のページの中に http の画像、CSS、JavaScript が残っている状態を混在コンテンツ(mixed content)と呼びます。ブラウザは http のスクリプトと CSS を読み込まないため、表示が崩れたり動かなくなったりします。画像など受動的なものは、主要ブラウザが https に読み替えて取得を試み、取得できなければ表示しません。
見つけ方は、ブラウザの開発者ツールのコンソールに出る「Mixed Content」の警告を読むのが確実です。外部サービスの埋め込みタグ(古いブログパーツ、アクセスカウンター、自社で作った古いウィジェット)に http:// が固定で書かれているものが残りやすい箇所です。
HSTS
転送だけでは、最初の1回は http で接続が始まります。その1回を中間者に横取りされる余地をなくすのが Strict-Transport-Security ヘッダーで、ブラウザに「このドメインは https でだけ接続する」と記憶させます。
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
ただし、http でしか動かないページやサブドメインが残っていると、HSTS を出した瞬間からそれらが開けなくなり、max-age の期間は戻せません。転送、canonical、混在コンテンツの3つを片付けてから、短い max-age で試すのが順序です。詳細はセキュリティヘッダー入門にあります。
設定後の確認
設定後は、次の4点を順に確かめます。1つ目は、SSL証明書チェックで証明書が www あり・なしの両方を含んでいること。2つ目は、http://example.com、http://www.example.com、統一先と逆の形の https の3つを開いて、すべて1回の転送で最終形に着くこと。3つ目は、主要なページで開発者ツールのコンソールに混在コンテンツの警告が出ないこと。4つ目は、セキュリティヘッダー診断で HSTS が応答に含まれていることです。
Google Search Console には https のプロパティを追加し、サイトマップも https の URL で送り直します。アクセス解析の計測タグや外部サービスに登録したサイト URL も、https に更新してください。
確認に使えるツール
- .htaccess生成: https 化と www 統一の転送を1つの規則で生成します
- SSL証明書チェック: 証明書の対象ドメインと有効期限を確認します
- セキュリティヘッダー診断: HSTS の設定状況を確認します