htacessによる正規化のまとめ:例)httpからhttpsに、wwwあり・なしの統一など

サイトを作成してまず最初にやることの一つにURLの統一(正規化)があります。

目次

何を統一するの?なぜ必要なの?

WEBサイトはURLの表記が少し違っても同じページが表示される場合があります。
1つ目に、最初の「http」か「https」の違い。次にドメインの前に「www」があるないか?3つ目に最後にindex.html/index.phpのありなしです。

Gogole等の検索エンジンには、それぞれは別のページとして認識されてしまうので、統一されていないと評価が分散されて検索結果が上位されにくくなります。

以下のページは別のURLですが、同じファイルを表示しています

  • http:www.mame.biz/
  • https:www.mame.biz/
  • https:www.mame.biz//index.html
  • http:mame.biz/
  • https:mame.biz/
  • https:mame.biz/index.html

.htacceessファイルで301転送させてURLを統一しよう

最も効果的な方法はサーバーの動きを制御する「.htacceess」ファイルに転送させる司令を記述して統一させることです。以下に記載するソースを紹介します。

どのスタイルに統一するのがいいの?

好みやサーバーの環境にも寄るのですが、私は短い以下のバージョンをお勧めします。

  • httpはsありのhttpsに統一
  • wwwは不要、wwwなしに統一
  • index.htmlは不要なので消す設定に

httpからhttpsへのリダイレクト

以下のソースを「.htaccess」ファイルに書き足します。

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

wwwあり・なしの統一

wwwありに統一する

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*) $https://www.%{HTTP_HOST}/$1 [R=301,L]

wwwなしに統一する

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

index.html(php)をなしに統一

以下の3つのURLはどれも同じページを表示しますが、正規化しないとURLが3つ存在してしまい、SEO効果が薄れてしまいます。

https:mame.biz/
https:mame.biz/index.html
https:mame.biz/index.php/

https:mame.biz/に統一したい!

以下のソースをでは、ファイル名の最後がindex.html(.php)の時に表記をなくしてくれます。

RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301,L]

上記の3つが稼働する.htaccessの書き方

以下のソースを「.htaccess」に記載してアップすれば、上記3つの動作を同時にリダイレクト可能です。

・hhtpをhttpsへ
・wwwをなしへ
・index.html(.php)をなくす

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

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301,L]
シェアしよう
  • URLをコピーしました!
  • URLをコピーしました!
目次