rel="canonical"属性
URLの末尾に?マークに続いてクエリ文字列が付加されたものを目にする機会も多いことと思います。サイト内検索結果だったり、ページングなどに利用されたりする場合があるわけですが、基本的に独立したページとして検索エンジンには認識されます。
SiReFaSoでもページングなどに利用しているのですが、ちょっと好ましくない状況を目にしました。
下のリンクは /?page=1 というURLで独立したページとしてインデックスされてしまっています。これはTOPページと同じ内容であり、並べて表示してもらっても困ります。
こういった状況を修正するには301リダイレクトが王道であり、検索結果を改善することが可能です。
ところで、重複コンテンツといえばそうなんだけど、ちょっとだけ違う、そんなクエリ結果もあると思います。印刷用ページであるとか、テーマの色が違うとか、ソート順が違うとか。こういったケースでは301リダイレクトは使えません。検索クローラだけでなく閲覧者までリダイレクトしてしまっては別ページを用意した意味がありません。でも別ページとしてインデックスされたくない、そんなケースもあると思います。
そんな状況のために考案されたのがrel="canonical"属性です。詳細はGoogleの解説サイトが参考になります。これによって重複するコンテンツの元となるページを検索エンジンに教えることができます。
というわけで、 /?page=1 の時はTOPページをcanonicalページとして指定するよう変更してみました。クエリ結果としては正当なものですし、リダイレクトは適切ではないな、という判断です。効果が反映されるまでは時間がかかるかもしれないのでしばらく様子を見てみることにします。
余談
canonicalの歴史
主要な検索エンジンがサポートすることを発表したのがおよそ2年くらい前のようです。まだ歴史が浅いんですね。なので利用されている例もまだ多くなく、効果の程も未知数で、今後ガイドラインの変更などもあり得るかもしれません。過大な期待はしないほうがよさそうです。
インデックスされた経緯
/?page=2 で前のページと次のページへのリンクを表示していたのですが、単純に1引いた数を指定していたため、 /?page=1 がインデックスされてしまったのでした。現在は1ページの時だけクエリを省くよう修正済です。サイトのURL初期設計って大事ですね。