httpからhttpsに.htaccessを使ってリダイレクトさせる方法

httpからhttpsに.htaccessを使ってリダイレクト

Googleが常時SSL化を推奨していることもあり、WEBサイトをSSL化しようと考えている方も多いと思います。

ここでは.htaccessを使ってhttpからhttpsにリダイレクトする方法を紹介します。

ECサイトでは、カード番号や購入履歴などの個人情報を守るためにもSSL(HTTPS)の導入は必要ですし、ECサイトでなくてもお問い合わせや相談フォームなどSSL化したほうが良い状況も多いと思いますので、導入時のリダイレクトの参考にしてみてください。

httpからhttpsへのリダイレクト

httpからhttpsへリダイレクトするには.htaccessに下記を追加します。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

これにより、例えば「http://example.com」というURLでアクセスすると「https://example.com」にリダイレクトされます。

下層ページも同じで、ドメイン以下同じURLでページがある場合は「http://example.com/content1」というURLでアクセスすると「https://example.com/content1」にリダイレクトされるということです。


httpからhttpsへの301リダイレクト

次に.htaccessを使ってhttpからhttpsに301リダイレクトする方法を紹介します。

もとのURLのページ評価を引き継ぎたい場合は、ただのリダイレクトではなく、301リダイレクトにする必要があります。

例えば、「http://example.com」と「https://example.com」が同じコンテンツでもGoogleは別のページと認識する可能性があります。

ですので評価を引き継ぐ必要がある場合は、下記のように301リダイレクトしてください。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

「example.com」のドメイン部分は、適宜自身のドメインに変更してください。

これらを簡単に解説しますと、
「RewriteCond」はリライトルールを適用する条件を記述するのですが、ここでの「%{HTTPS} off」は「httpsではない場合」ということになります。

そして「RewriteRule」は、リライトルールを記述するのですが、ここでは「記述したURLにリダイレクトする」という意味になります。

[R=301,L]は、Rは「リダイレクト」となり、Lは「適用したルールの終了」という意味になります。

WordPressのhttpからhttpsへリダイレクトの注意点

WordPress(ワードプレス)でサイトを構築している場合、必要によっては修正しなければいけない箇所があります。

WordPressサイトでhttpからhttpsへリダイレクトした場合、管理画面の設定 > 一般から「WordPress アドレス (URL)」「サイトアドレス (URL)」を https のURLに変更してください。

次の注意点として、サイトの下層ディレクトリにブログやコラムなどとしてWordPressを設置している場合、ルートディレクトリにある.htaccessの記述が効かないことが多くあります。

その場合は、WordPressを設置しているディレクトリにある.htaccessに下記を追加してください。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/blog/$1 [R=301,L]

ドメイン後の「blog」という部分を、適宜自身のディレクトリ名に書き換えてください。

次の注意点として当たり前のことになりますが、テーマのテンプレートや記事中など、絶対パスで記述している箇所がありましたら、すべてhttpsのURLに変更する必要があります。

リンクなどはリダイレクトさせているから、新URLに301リダイレクトされますが、不要なリダイレクトは避けた方が良いため、可能な限り修正したほうが良いでしょう。

まとめ

Googleのランキングシグナルとして、HTTPSが推奨されていることもあり、SSLを導入するかどうか、新規のサイトを最初からSSLにしておくべきかどうか迷っている方も多いと思います。

今回のリダイレクト方法を、状況に応じたリダイレクト設定に変更して試してみてください。また、.htaccessは記述場所によって他のRewriteRuleの影響を受けることがありますので、もしうまくいかない場合は記述場所を変更するなどしてみてください。