httpからhttpsにリダイレクト(常時SSL化)する方法|Apache .htaccess
httpからhttpsにリダイレクト(常時SSL化)する方法
Webサイトで http:// へのアクセスを全て https:// にリダイレクトする方法をメモ。
前提・環境
- Webサーバー(httpd) は Apache
- 設定は .htaccess を使用
http → https リダイレクトについて
具体的には下記の例のようにURL1
にアクセスがあった場合に、対応するURL2
に自動的に転送する。
URL1(アクセス元) | URL2(転送先) | |
---|---|---|
http://example.com | → | https://example.com |
http://www.example.com | → | https://www.example.com |
http://www.example.com/js/hogehoge.js | → | https://www.example.com/js/hogehoge.js |
http://www.example.com/img/hogehoge.png | → | https://www.example.com/img/hogehoge.png |
http://www.example.com/a/001 | → | https://www.example.com/a/001 |
なんでリダイレクトするの?
SSLを導入しサーバーとの通信をSSL/TLSで暗号化する(https://でアクセスできる)事で、第三者に情報を読み取られないようにする準備が整っても
暗号化がされていない非SSLでの通信(http://でアクセス)ができる環境が存在していては、その効果が減ってリスクが増えるため。
どんなケースがあるの?
Webサイトが過去にhttpで運営されていた場合、httpでアクセスされる以下のようなケースが考えられる。
(httpでアクセスできるURLを古いURLとします)
- Google などの検索エンジンに古いURLが記録されている
- 誰かが古いURLをブックマークしている
- 別のサイト等から古いURLにリンクされている
- 自サイト内での参照(リンク)が、絶対パスの古いURLになっている
設定方法
今回は.htaccess
で設定するので、以下のコードを対象サイトのドキュメントルートにある.htaccess
に追記する。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# httpへのリクエストをhttpsにリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
やRewriteEngine on
等すでに設定が存在すれば、それ以外を追記してもOK- この説明自体が良くわかんない人は、危ないからやらないか、とにかく
.htaccess
の一番したに追記する
補足・参考
ちなみに上記の設定をおこなっても、自サイト内のHTMLコード上での絶対パス参照(リンク)が http
になっている場合
ブラウザ上では警告が表示されてしまうので、かなり面倒だけどサイト内の全てのコードは http
から https
に修正した方がいい。