スポンサードリンク
前回、『(Server)さくらインターネットの新コントロールパネルで無料のSSLを設定』でSSL通信の設定を行いました。
このままでは、URLがhttpとhttpsの両方でサイトのページが見れてしまいます。
すると、Googleさんに重複ページだと判断されてしまうため
どちらかに統一しなくてはいけません。
そこで、.htaccessファイルで301リダイレクト処理を書くことで
httpのページをhttpsのページへ常時リダイレクトされるようにします。
スポンサードリンク
htaccessへ301リダイレクト設定をする
301リダイレクト設定
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
さくらインターネットだと、ドメインで設定しているフォルダ直下に上記の内容を書いた、htaccessファイルを置きます。
これをサーバーに置いておくことでhttpでアクセスしたページがhttpsにリダイレクトされます。
htaccessの中身を見てみましょう
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
1行目にある『mod_rewrite』とはURLの書き換えなどを行うモジュールで、『mod_rewrite』が有効な場合だけ処理すすように指示しています。
有効な場合は2行目のRewriteEngine On を書いて使用可能な状態にします。
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
3,4行目でhttpsへの301リダイレクト処理をしています。
3行目の『RewriteCondディレクティブ』は、『RewriteRule』を実行するための条件を定義するための記述です。
『RewriteCond』に記述した条件というのがhttpsが無効になっている場合だったらという事になります。
httpでアクセスしてきた場合のみ有効になり、『RewriteRule』に記述したURLの書き換えと転送が実行されるようになります。
『RewriteRule』で書かれているのが、httpsへURLを書き換えて301リダイレクトするという内容です。
【^】は文字の始まり、【.】は任意の1文字、【*】は任意の文字の連続、つまり全ての文字列です。
【()】は文字の集合を1つのグループにまとめて扱うことができます。
【$】は直前の文字が行の『末尾』にある場合にマッチします。
【(.*)】とカッコでくくり後方参照の$とすることで全てのアクセスを対象としています。
書き換えを【https://%{HTTP_HOST}%{REQUEST_URI}】で指定しています。
【{HTTP_HOST}】でドメインを表し、【{REQUEST_URI}】でブラウザから送られてきた要求のURIを表します。
最後に【R=301】として、301リダイレクトを指定します。
【L】は書き換えプロセスの終了を表すフラグです。
リダイレクトでの常時SSL通信設定のまとめ
最近では、SSL通信は一般的にになっているので
常時SSL通信を設定しておいたほうがいいようです。
せっかく書いたページが重複扱いされるのも嫌なものです。
僕も設定をし忘れていたのでサーバーでSSL設定してからほぼ1年ほど重複のままでしたw
htaccessは書き間違えると画面真っ白になってしまいますので
必ずファイルを元にもどせるようにバックアップを取っておいてくださいね。
スポンサードリンク