httpとhttpsをリダイレクトして統一する.htaccessの書き方
- 作成日:2018/10/11
URLのhttpとhttpsを統一するやり方の説明です。 SEO対策にもなるので、サイトをSSL化したら忘れずに設定しておきましょう。
httpとhttpsの違い
ホームページが暗号化されている場合は、URLの先頭部分がhttpsとなり、 暗号化されていない場合はhttpとなります。
暗号化されていると何が良いの?と思うかもしれませんが、とりあえず「セキュリティが強化される」と考えて良いです。
ホームページを閲覧するとき、Webサーバと自分のパソコンは通信をすることでWebページが表示されるのですが、 その通信が暗号化されていると悪意のある第3者からの盗聴を回避でき、セキュリティ面で安心できるのです。
URLをhttpsにすることを専門的な言い方で「SSL化する」といいます。 サイト管理者にとってホームページをSSL化するのは少し設定が必要なので敬遠する人もいますが、 GoogleはSSL化することを強く推奨しています。
検索結果1ページ目の上位サイトの9割以上が暗号化されたhttpsとなっています。
今後はさらにSSL化が一般的になっていくでしょう。本格的にサイト運営をする場合は避けては通れないものなのです。
httpsで統一する「正規化」とは
ユーザはhttpとhttpsどちらで入力しても同じページにアクセスできますが、 サイトと運営側としてはこのまま放置しておくのはSEO的に望ましくありません。
検索エンジンがhttpサイトとhttpsサイトを別サイトとしてインデックスに登録してしまう可能性があるからです。
別サイトとして登録されてしまうと評価が分散されてしまうので、サイトをSSL化した後はhttpsに統一する必要があります。 URLを統一することを専門的な言い方で正規化するといいます。
正規化するには.htaccessというファイルを修正します。
httpsで301リダイレクトをするhtaccessの書き方
URLをhttpsで統一する方法です。 .htaccessファイルに「301リダイレクト」という機能を追加します。 httpでアクセスがあった場合、httpsのアクセスに変換(リダイレクト)してくれる機能です。
httpsの統一されたアクセスにすることで、検索エンジンがhttpのページを認識しないようにするのが目的です。
では、実際に.htaccessファイルに追記するソースコードをご説明します。 上記の図をコードで表現して書くと以下のようになります。
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
では、ソースコードの説明をします。 簡単な説明なので「なんとなくこんなことをしているのだな」と思っていただければ結構です。
RewriteEngine On
Rewrite機能(URL書き換えエンジン)を有効にしています。 複数のURLを書き換える場合でも、何回もRewriteEngine onを記述する必要はなく、1度でOKです。 (書き換えるたびに記述しても問題ありませんが)
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCondは条件式です。条件は「httpsアクセスではないとき」となっています。 別の書き方として「RewriteCond %{HTTPS} off」と書いても同じことです。
そして、その条件に一致したときに実行されるのがRewriteRuleとなり、その内容は「httpsアクセスに301リダイレクトする」というものです。
これらをhtaccessに書き足すことで、httpアクセスがhttpsアクセスで統一され、正規化されます。
最後に
httpsでURLを正規化したように、「www」と「index.html」も正規化しておくとSEO対策になります。
こちらも.htaccessファイルを修正するので、未実施の方は今のうちにまとめてやっておくことをお勧めします。