.htaccessでhttpをhttpsにリダイレクトさせる方法
WebサイトをSSL対応させた場合、URLがhttpからhttpsではじまるものになります。
その際に、http://sample.com/にアクセスしても、自動的にhttps://sample.com/にリダイレクトさせたいですよね。
.htaccessを使えば簡単にできますので、
・全ページをhttpsへリダイレクト
・301と302でのリダイレクト
・特定のページをhttpsへリダイレクト
・正しくリダイレクトしているかチェックする
の方法を紹介します。
SSLに対応したけど名刺に記載しているURLはhttpのままだ!とうこともあるので設定しておきましょう。
全ページをhttpsへリダイレクト
.htaccessファイルに以下のコードを記述しサーバーのルートにアップロードします。それだけでhttpでアクセスした際も全ページがhttpsにリダイレクトされます。
常時SSLが広がりつつあるので、設定する機会も多くなってくるでしょう。
なお、リダイレクトには301「恒久的な転送」と302「一時的な転送」の方法があります。URLが半永久的に変わらないケースの方が多いと思うので、基本的には301リダイレクトでいいかと。
301リダイレクト
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
302リダイレクト
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule>
特定のページをhttpsへリダイレクト
お問い合わせフォームのみSSLにしたいといった場合、特定のページのみリダイレクトさせることができます。
以下の記述では、contact(お問い合わせフォーム)とorder(注文フォーム)ディレクトリのみhttpsにリダイレクトされます。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} ^/contact/.*$ [OR] RewriteCond %{REQUEST_URI} ^/order/.*$ RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
リダイレクトが正しく実行されているかチェック
ブラウザで実際にhttpにアクセスして確認します。
さらに、リダイレクトチェック | ohotuku.jpを使えば301か302で正しくリダイレクトされているかの確認もできます。