- SSL化についてまとめられているサイト
.htaccessでhttpからhttpsへ301リダイレクト
httpへのアクセスを.htaccessを使い強制的にhttpsへ301リダイレクト
単純なリダイレクトではなく、301リダイレクトにすることが肝心です。
http://sample.com と https://sample.comは一緒のページが表示されますが、Googleは別のページと認識しています。
そのため、ただのリダイレクトだと今までGoogleが評価していたものを放棄することになってしまいます。
では、httpからhttpsへのリダイレクト方法です。
.htaccessに以下の記述をすればOKです。
1
2
3
|
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リダイレクト)の書き方
1
2
3
|
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の方を利用します。
1
|
RedirectMatch permanent ^/(.*)$ https://sample.com/$1
|