サイトを作成してまず最初にやることの一つに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]