URLの正規化でページ評価の分散を防ぐ
URLの正規化とは
URLを正規化するための対策を何も行っていないサイトで、『index.html』というページのファイルをサーバーのルートディレクトリにアップロードしたとします。
当ブログのドメイン(jun-jun.net)を例にお話すると、『https://jun-jun.net/』とURLを打ち込んでも、『https://jun-jun.net/index.html』と打ち込んでも、同じ内容のページが表示されます。
どちらも、『index.html』という同じファイルに書かれた内容を表示しているため、内容が同じになるのは当然なのですが、URLは異なるためクローラーには違うページと認識されてしまいます。
このような事態を防ぐため、URLの表示を統一する事を『URLの正規化』と言います。
同一とみなされないURL
URLが異なり、別のページと認識されてしまう例は他にもあります。
| 【index.html】の有無 | |
| https://jun-jun.net/ | https://jun-jun.net/index.html |
| 【www】の有無 | |
| https://jun-jun.net/ | https://www.jun-jun.net/ |
| 【SSL化(暗号化)】の有無 | |
| http://jun-jun.net/ | https://jun-jun.net/ |
| 【パラメータ】の有無 | |
| https://jun-jun.net/ | https://jun-jun.net/?id=123456 |
上記4種の例は全てルートディレクトリに置かれた『index.html』という同じファイルを表示しているページですが、クローラーには『異なるページ』と認識されてしまいます。
既にサイトを立ち上げている方で、正規化の対策を行っていないかもしれないと思う方は、自分のサイトで上記4パターンのURLを入力してみましょう。
もし、異なるURLでページを開けた場合は、正規化ができていない『かも』しれません。
また、紛らわしい例として、
同じものとみなされる:https://jun-jun.net ⇔ https://jun-jun.net/
同じものとみなされない:https://jun-jun.net/samle ⇔ https://jun-jun.net/sample/
ルートドメインに設置した『index』ファイルを参照する場合であれば、『/』の有無は同一とみなされますが、それ以外は同一とみなされません。
上記例の場合、『https://jun-jun.net/samle.html』なのか『https://jun-jun.net/samle/index.html』なのか判別できない事が理由です。
正規化できていない場合の損害
上記のように同一ファイルを参照するURLにもかかわらず、『異なるページ』と判断されてしまった場合、以下のような弊害が生まれます。
ページの評価が分散される
『動的URLによる重複ページが多い場合を除いて』基本的に、『index.html』『www』『SSL化(暗号化)』の有無などにより、重複した複数のページが存在したとしてもペナルティを受ける心配はありません。
ただし、本来1つのページに集約されるはずだった評価が分散されるため1ページごとの評価が下がる可能性があります。
例えば、『https://jun-jun.net/』というページ、『https://www.jun-jun.net/』というページにそれぞれ1つづつ被リンクが付いた場合、本来であれば『2』つの被リンクの付いたページになるはずが、『1』つしか被リンクのついていないページとなってしまいます。
クローラビリティの低下
クローラーが『異なるページ』と認識するため、サイト全体をクロールする際、不必要な同一ページもクロールする事になり、効率が悪くなってしまいます。
サイト分析の手間が増える
例えば、特定のページのPVを調べたい場合に『https://jun-jun.net/』というページと『https://www.jun-jun.net/』というページの数値を自分で合算しなければなりません。
重複ページが増えれば増えるだけ、サイトの分析が困難になってしまいます。
『.htaccess』で正規化
『.htaccess』を使う事で、正規化したURLへリダイレクト(転送)する事が可能です。
リダイレクトに関しては、
に詳しく記載しているため、参考にしていただければ幸いです。
簡単に言ってしまうと、『自分が決めた形式とは異なるURLで訪問者が来た際に正規のURLへ強制的に転送』してしまう技術です。
『SSL化(暗号化)』する場合
1行目:非暗号化通信接続(http接続)を
2行目:暗号化通信接続(https接続)へリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
『www』の有無
1行目:『www』有りの場合
2行目:『www』無し・https通信へリダイレクト
RewriteCond %{HTTP_HOST} ^www.jun-jun\.net
RewriteRule ^(.*)$ https://jun-jun.net/$1 [R=301,L]
※1 『URL』は自身サイトドメインに変換して下さい
※2 SSL化しない場合は2行目『https』部分を『http』へ変更して下さい
1行目:『www』無しの場合
2行目:『www』有り・https通信へリダイレクト
RewriteCond %{HTTP_HOST} ^jun-jun\.net
RewriteRule ^(.*)$ https://www.jun-jun.net/$1 [R=301,L]
※1 『URL』は自身サイトドメインに変換して下さい
※2 SSL化しない場合は2行目『https』部分を『http』へ変更して下さい
『index.html』の有無
1行目:『index.html』有りの場合
2行目:『index.html』無し・https通信へリダイレクト
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.php$ https://jun-jun.net/$1 [R=301,L]
※1 『URL』は自身サイトドメインに変換して下さい
※2 SSL化しない場合は2行目『https』部分を『http』へ変更して下さい
※3 拡張子が『.html』以外(『.php』など)の際は拡張子を変更して下さい。
1行目:『index.html』有りへリダイレクト
RewriteRule ^$ /index.html [R=301,L]
実際の使用例
個別の方法は上に書いた通りですが、上に書いたものをそのまま『.htaccess』に書いても動作しません。
私のこのブログサイトでは、『SSL化(https化)』『www無し』『index.php無し』という正規化を行っています。
(.htmlではなく.phpという拡張子でページを作っています。)
私のこのサイトの『.htaccess』は以下のようになっているので、適選置き換えて参考にしていただければと思います。
Options +FollowSymLinks -Indexes
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www.jun-jun\.net
RewriteRule ^(.*)$ https://jun-jun.net/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ https://jun-jun.net/$1 [R=301,L]
設定が完了したら、必ず正しく転送されているか確認しましょう。
『canonical』で正規化
先ほどご紹介した『.htaccess』を用いた正規化では、サイト全体に対し適用される強制的なリダイレクト処理を行う事で正規化を行いました。
『.htaccess』を使い正規化を行えば、『特殊な場合』を除いて正規化できた事になります。
『canonical』(カノニカル)は、直訳すると『標準的な』という意味で、正規のURLを示すために用います。
『.htaccess』はサイト全体に対して効力がありましたが、『canonical』は各ページ事に設定する必要があります。
また、『.htaccess』を用いた正規化は、強制的に正規のURLへ転送されるため、クローラーにもユーザーにもわかるものですが、『canonical』はクローラーに対して正規のURLを伝えるものであり、転送などは行われませんが、評価は正規のURLに集約されます。
『canonical』の記述方法
『canonical』は、<head>タグ内に記述します。
『https化』『www無し』『index.html無し』の場合、
<link rel='canonical' href='https://example.com'/>
上記のように記載します。
『canonical』の利用例
①パラメーターが付く可能性のあるページ
②色違いサイズ違いなどのページ
③スマホページとPCページが分かれているページ
例えば、『https://example.com/sample.html』『https://example.com/sample.html?id=1234』という2つのページはパラメータの有無という違いはあるものの、表示するページは1つの同じページです。
しかし、パラメータの有無の違いにより、クローラーには『異なるページと判断』されてしまいます。
パラメーターの値は、運用上必要になるため、パラメーター無しに転送するといった処理が使えません。
そこで登場するのが『canonical』です。
<head>タグ内に『canonical』を設定し、正規のURLは『https://example.com/sample.html』です。
とクローラーに伝えておけば、評価を『https://example.com/sample.html』のURLページに集約する事ができます。
例えばECサイトなどでは、ページの構成上、同じ服のサイズ違い・色違いなどの複数ページが作成される場合も珍しくありません。
これまでとは違い、別のページではあるのですが、内容はほとんど同じものになってしまいます。
『黒』『白』『赤』『青』など色違いで複数ページが存在する場合、いずれか1ページを正規のURLとして設定する事で評価を集約する事が可能です。
- 黒:『https://example.com/sampleBluck.html』
- 白:『https://example.com/sampleWhite.html』
- 赤:『https://example.com/sampleRed.html』
- 青:『https://example.com/sampleBlue.html』
という4つのページが存在し、『黒』のページに評価を集約させたい場合、『全てのページ』の<head>タグ内に
<link rel='canonical' href='https://example.com/sampleBluck.html'/>
と記載します。
この設定により、『ページ評価を集約』できるだけでなく、『重複コンテンツへの低評価を避ける』こともできます。
スマホ用ページとPC用ページを分けてサイトを作っている方も『canonical』を使う事で成果を集約する事が可能です。
以前まではPC用サイトを検索順位の評価の基準としていましたが、現在は、スマホサイトが検索順位の評価基準に変わっているため、『スマホサイト』に評価を集約するのが良いかと思います。
設定方法は②の方法と同様で、スマホ用ページ、PC用ページに集約させたいURLを『canonical』を使って設定しましょう。
『canonical』利用時の注意事項
絶対パスで記載
『canonical』で指定するパスは、『相対パス』では無く『絶対パス』で記載します。
『相対パス』でもクローラーは認識してくれますが、『SSL化』や『wwwの有無』なども明確に書ける『絶対パス』がおすすめです。
Googleも公式に絶対パスで指定することを推奨しています。
URLを間違えない
『canonical』を設定する際は絶対にURLを間違えないよう注意して下さい。
『canonical』で指定した正規URLにSEO評価を集約するわけですが、URLを間違えるとSEO評価の受け渡し先が行方不明になってしまいます。
『canonical』の設定は、クローラーに対して記述しているため、ぱっと見て間違いに気づきにくいため、とにかく注意しましょう。
集約先に『noindex』の記述は無いか
評価を集約するページに『noindex』の記載が無いか確認しましょう。
『noindex』の使い方は、下記記事に書いてあるのでわからない方は参考にして下さい。
簡単に説明すると、noindexは『クローラーにこのページは評価せず検索結果にも表示しなくて良いです』と伝えるためのものです。
つまり、『canonical』によって評価を集約させるはずが、評価しなくて良いページに評価を渡す事になりおかしな事になってしまいます。
『canonical』の用途を理解する
『canonical』を単一で使う場合 ⇒ URLの正規化が目的
『canonical』を複数で使う場合 ⇒ 評価の集約・重複防止が目的
上記2つのような意図で『canonical』を設定するわけですが、評価を集約する際、あくまでも『重複コンテンツに対して利用』するのが正しい使い方です。
『内容の全く異なるページ』を集約しても、利用意図に反するため、canonicalの指定は無視される可能性もあります。
また、間違えやすい例として、ニュースサイトなどで長文となり、複数ページに分けている場合などは、それぞれのページに書かれている内容は異なるため、『canonical』は使用しないようにしましょう。
最後に
今回は、『.htaccess』を使った正規化、『canonical』を使った正規化、評価の集約のお話をしました。
どちらか片方だけの対策では、完全に正規化・集約・転送できない場合が必ずあります。
そのため、『.htaccess』『canonical』両方の対策をおすすめします。
また、ページ内の『内部リンクのURL』や『サイトマップに記載したURL』なども正しい正規化されたURLになっているかこの機会に確認してみましょう。
使い方や記載を間違えると被害が大きいため、注意して作業を行って下さい。