.htaccessでURLの正規化。httpsを強制してSEO的なマイナスなコンテンツの重複を解消!

更新日:

どうも、カッパです。

無料の独自SSL(Let's Encrypt)登場で、ホームページを閲覧する際の暗号化された安全な通信がグッと身近になりました。

レンタルーサーバーなどでは、手軽に設置できるインターフェイスも用意されており、誰でも簡単に独自SSLを設置できる時代です。でも、それだけだと、

「http://〜」と「https://〜」で同じコンテンツが表示される問題

という、SEO的にマイナスな要素(重複コンテンツ)も出てくるので、httpsを強制してきっちりSEO対策しておきましょう。

まとめて設定だけ済ませてしまいたいという方はこちらからどうぞ。

.htaccess で行うURLの正規化 ( wwwあり / なし統一、index.html非表示、https強制) まとめてどうぞ

.htaccessを使ったURLの正規化について。今時必須のhttps強制、wwwあり/なし、indexファイルの非表示化をまとめて設定できるようにしました。初心者が不安に思う点、実際に記述した際に迷いがちなポイントも解説してあります。

「http://〜」からのアクセスをすべて「https://」に変換し、ついでにwwwあり・なしを統一する

では早速、保護されてないページへのアクセスを、保護されているページにリダイレクトする、https強制を行いましょう。例によってエックスサーバーでの設定が基本です。

コードはこちら。同時にwwwなしで統一します。


# https強制(wwwなし)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
# URL正規化コードここまで

ちなみにwwwありでhttpsを強制する場合はこちらのコードを使用してください。

# https強制(wwwあり)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# URL正規化コードここまで

コードを日本語訳してみる

例によってコードを無理やり日本語にしてみましょう。このコードを無理やり日本語訳っていうのは、プログラミングスキルの向上に関しては結構効果があるんじゃないかなって個人的には思っています。

RewriteCond %{HTTPS} off

ここでページにアクセスがあった時の条件を設定しています。%{HTTPS} offが条件。日本語に意訳すると

暗号化されていない「http://~」でのアクセスがあった場合、RewiteRuleの命令を適用

となります。

RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

上述のRewritCondでhttpsではないアクセスが渡されたので、そのURLをhttpsが付いた形で書き換えます。

URLの末尾にある「$1」というのは、正規表現の変数です。冒頭の「^(.*)$」で設定した部分。無理やり和訳すると、

$1以外の部分を「https://example.com/」に書き換える
※ $1部分には「どんな文字列・文字数でも可」という定義がされている

という感じです。

RewiteCondやRewiteRuleについての詳細な解説はこちらから。

.htaccessでURLの正規化。wwwあり・なしで統一する(コード解説付き)

どうも、カッパです。 .htaccessを使ったURLの正規化について、前回は一発コピペでOKな感じのおまとめ編を書いたのですが、個別の説明も必要かと思うので、ここで説明します。 また、URL正規化の ...

もしhttpsへのリダイレクトをせずに放置していると...。信頼を失うかも

https化されていない場合のブラウザ上の表示。

非httpsがGoogle的に非推奨になってからだいぶ経ちますが、それでもまだhttps化されずに運用されているページはたくさんあります。

今回のurl正規化とは別の話ですが、サイト全体のSSL化は必須です。

  • うちはそんなホームページ重視してないから...
  • お金かかるならまだいいかな...

という理由で放置している場合、思わぬところでお客さまからの信頼を失っている可能性もあります。

一度、自分のサイトがhttps化されているか、確認しておいて損はないですね。

  • B!