.htaccessでhttpからhttpsへ301リダイレクト

SEO
スポンサーリンク

2014年8月7日にGoogleがHttpsをSEOの評価項目にすると発表しました。

Google ウェブマスター向け公式ブログ: HTTPS をランキング シグナルに使用します

このため、httpからhttpsへの変更を考えているWEB担当者も多いと思います。

Apacheサーバーで、.htaccessmod_Rewriteが使える場合のリダイレクト方法を書いていきます。

スポンサーリンク

サイトをhttpからhttpsにする方法

まずhttpsを有効にするために、SSLを導入します。

導入の仕方は以前書いたこちらを参照

次に、httpへのアクセスを.htaccessを使い強制的にhttpsへ301リダイレクト

単純なリダイレクトではなく、301リダイレクトにすることが肝心です。

https://sample.com と https://sample.comは一緒のページが表示されますが、Googleは別のページと認識しています。

そのため、ただのリダイレクトだと今までGoogleが評価していたものを放棄することになってしまいます。

では、httpからhttpsへのリダイレクト方法です。

.htaccessに以下の記述をすればOKです。

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

.htaccessへの記載内容の説明

RewriteEngine on

リライト機能をOnにします。

RewriteCond

リライトのルールを適用する条件を記載します。上記の%{HTTPS} off はhttpsではない場合を意味します。

書き方は、RewriteCond %{変数名} 正規表現 [オプション] です。

 

RewriteRule

リライトのルールを記載します。ここに記載したURLにリダイレクトします。

RewriteRuleの意味は以下のようになります。

RewriteRule (正規表現A) (置きかえるURL) [オプション]

 

上の例だと、 (正規表現A)の部分が、 ^(.*)$ です。

  • ^は行の先頭
  • .は任意の一文字
  • *は直前の文字を0回以上繰り返す
  • $ は行末を意味します。

つまり行の先頭から、行末まで任意の1文字が無限に繰り返される、いわば何にでもマッチする正規表現と思って下さい。

$1は(正規表現A)にマッチしたURLを表示します。

ただし、$1で表示するのは、ドメイン以降のURLなので、https://sample.com/$1といった形式でhttps://sample.comをいれます。

[R=301,L] は、Rはリダイレクト、Lはここで書換のルールは終了(Last)の意味です。

Rだけだと、302(一時的なリダイレクト)なので、必ず =301 をつけて今までの評価も持って行きましょう。

もっと簡単なhttps化(301リダイレクト)の書き方

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

Redirect permanent とRewriteRule の違いは?

リダイレクトには以下の2つの書き方 (RewriteRule とRedirect permanent) があります。

mod_rewrite の機能を使うものが、RewriteRuleでの書き方になります。
mod_rewrite は、Webサーバー(Apache)のモジュール(拡張機能)の1つです。

モジュールのため入っていないサーバーもあります。
入っていない場合は、Redirect permanentの方を利用します。

RedirectMatch permanent ^/(.*)$ https://sample.com/$1

コメント

タイトルとURLをコピーしました