35歳で会社を辞めてブログ・アフィリエイトで生計を立てているフリーランスのブログ

現役Webデザイナーがお答えします

.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で正しくリダイレクトされているかの確認もできます。