常時非SSL化の設定方法

最近は、新しくサイトを作ると、勝手にSSL化してしまうことも多い上、すでにある古いサイトも自動的にSSL化してしまっていることがあります。

そこで、常時非SSL化に向けて、どういう設定をしなくてはいけないかを解説したいと思います。

最大の問題点は、検索エンジンがhttpかhttpsか、どちらのプロトコルでインデックスしているかです。すでにhttpsでインデックスされていると最悪です。

そこで、検索エンジンでのインデックスがhttpになるようにするのが、常時非SSL化の要となります。これをしておかないと、自分のサイトの暗号化方式に対応していないブラウザーを使っている人は、自分のサイトへ検索エンジン経由では来られなくなってしまいます。

つまり、httpでもhttpsでも、どちらでもアクセス可能なようにするのではなく、http一本に絞り込むことが重要なわけです。

例えば、仙人の結界第6サイト(www.sennin-no-kekkai.org)では、.htaccessのディレクティブにこの様に書きました。www付きのhttpに統一してあります。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.sennin-no-kekkai.org/$1 [R=301,L]

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

もしwwwなしのhttpに統一するのなら、次に示すように書きます。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ http://sennin-no-kekkai.org/$1 [L,R=301]

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

汎用的な書き方になっているので、それぞれ三行目のURLだけ変えれば、使えます。

さて、難しいのは、ルートディレクトリーをSSL化して、サブディレクトリーを非SSL化する場合です。この場合、そのサイトの暗号化方式に対応していないブラウザーでサブディレクトリーにアクセスすると、アクセスできません。

一部のサブディレクトリーをSSL化するのは問題ありませんが、非SSL化するサブディレクトリーがある場合は、ルートディレクトリーも非SSL化することが必須になります。

じゃあ、またね。

関連ページ:
.htaccessでURLをwww無しに統一するクールな書き方(適当プログラマー)
.htaccessでリダイレクト設定[www有無統一][http,https](Qiita)
wwwあり・なしを統一してドメインを正規化する方法(SEO Pack)
[.htaccess] HTTP環境変数一覧(ぱそまき)
.htaccess 設定まとめ(HOMEPAGE TIPS BLOG)

※一つ目の.htaccessのディレクティブで、wwwの前にある「!」の意味は、上記関連ページのうち、最後のページに書いてあります。「不一致なら、trueを返す」という意味です。
※上記関連ページのうち、一番目のページに書いてある「(.*)」の記述は不要だと思います。