WebサイトをSSL対応にしたあとに大切なのが、httpでアクセスされた場合でも自動的にhttpsへ転送する設定です。これを行うことで、利用者は常に暗号化された安全な接続でページを閲覧できるようになります。
ここでは、.htaccessを使ってhttpからhttpsへ転送する方法を初心者向けに分かりやすく解説します。実際の設定例だけでなく、設置場所や注意点もあわせて確認できます。
この記事で分かること
httpからhttpsへの転送とは、httpでアクセスされたURLを、自動的にhttpsのURLへ移動させる設定です。SSL証明書を導入しただけでは、httpでアクセスした利用者がそのまま暗号化されていないページを開いてしまう場合があります。
そのため、SSL対応が完了したあとは、httpへのアクセスをすべてhttpsへ統一する設定を行うのが一般的です。これを常時SSL化と呼ぶこともあります。
この設定は、次のような場面で必要になります。
サイト全体をhttpからhttpsへ転送する場合は、.htaccessに次のように記述します。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
この設定では、httpsではなくhttpでアクセスされた場合のみ、同じホスト名のhttps URLへ301リダイレクトします。ページのパスもそのまま引き継がれるため、トップページだけでなく下層ページにも対応できます。
この設定を初めて見ると分かりにくいので、役割を簡単に分けて見ておきます。
301リダイレクトとは
301は恒久的な転送を意味します。今後もhttpsを正式なURLとして使う場合は、通常こちらを使います。
サイト全体をhttpsへ転送したい場合は、通常は公開ディレクトリのルートに .htaccess を設置します。
/public_html/.htaccess
この場所に置くことで、サイト全体に設定を反映しやすくなります。すでに .htaccess がある場合は、新しく作るのではなく既存ファイルに追記します。
httpからhttpsへの転送を設定する前に、次の点を確認しておくと安全です。
先にhttpsで正常に表示できることを確認してから転送設定を入れてください。証明書や表示内容に問題がある状態で転送すると、サイト全体が見づらくなったり警告が出たりすることがあります。
httpからhttpsへの転送は便利ですが、設定の順番や記述内容によっては不具合が出ることがあります。
設定を誤ると、ページが何度も転送されるリダイレクトループが発生したり、500エラーで表示できなくなったりすることがあります。作業前には必ず元の .htaccess をバックアップしてください。
転送されない場合やエラーになる場合は、次の点を確認します。
とくに多いのは、すでに入っている別のRewrite設定との競合です。既存の .htaccess がある場合は、全体の流れを見ながら追加するのが安全です。
WISNET / わいずねっと のレンタルサーバー
用途に合わせて2つのレンタルサーバープランをご用意しています。
.htaccessでhttpからhttpsへ転送する設定を行うと、利用者を安全な接続へ自動的に案内できます。SSL証明書を導入したあとは、できるだけ早めに設定しておきたい基本項目です。
ただし、既存のリダイレクト設定との組み合わせによっては不具合が出ることもあります。バックアップを取ったうえで、1つずつ確認しながら設定を進めると安心です。