canonical属性を実装してみました

| コメント(0) | トラックバック(0)

ちょっと前から、気になっていたのが、「canonical属性」。

別URLだが同内容となってしまう重複ページがある場合、検索エンジンに正しいURLをインデックスしてもらう為のLinkタグです。

<link rel="canonical" href="http://mysite.com"/>
<head> ~ </head>内に記述する。

検索エンジン3社、正しいサイトURLを認識させるcanonical属性を導入(URLの正規化)2009年02月13日

パンヤ用のメンバーリストCGIの初版を2年前から運用していて気になっていたのが、Googleウェブマスターツールで、メタデータとタイトルタグの重複を指摘される事。

ソート情報をURLパラメーターに含んだリンクを生成している為、一つのユーザーデータに対し、ソートキーの組み合わせの数だけURLが生成されてしまいます。

メタデータとタイトルの重複回避対策

二年ほど前に作った初版のメンバーリストCGIは、meta情報の keyword と description 及び、<title> のテキストを、全ユーザーデータ同一の内容で吐き出していました。もちろん検索エンジンには、複数のユーザー情報が、全て類似ページとして扱われている状態です。

googleさんから大量の重複指摘を受けておりましたが、spamサイトの警告もされませんでしたし、CGIを一般公開する気も無かったので放置しておりましたけど・・・。

今回CGIを書き直すにあたり、まずは、メタ情報とタイトルの重複を回避する為、ユーザー情報の表示ページそれぞれに、

[ユーザー名] -[更新日] - サイトタイトル

というようなユニークな表記を導入してみました。

今日で1ヵ月弱が経過しまして、googleさんからの重複指摘は激減しました。各ユーザーについて2から4件程度の重複を指摘されている程度です。対処をしてから反映されるまで、およそ二週間から一ヶ月ほどの時間がかかる様子です。

canonical属性の導入

さて、ここまで減ってくると、残った数件の重複も消したくなるのが人の性というもの。残った重複指摘は、どうしても避ける事のできないソートキー情報によるURLのバリエーションです。

これが、自分のサーバーだけの事であれば、.htaccessでリダイレクト設定したり、ウェッブマスターツールでパラメーターの個別設定をすれば何とかなりそうな気もするのですが、不特定多数の方に公開してしまっているCGIスクリプトですから、スクリプト側で対応できるところはしないといけません。

実装にあたっては、とってもベタなやり方で対応しました。

$canonical という変数を作りまして、HTMLヘッダを吐き出すコードの中に埋め込んでいます。

ユーザーページ : $canonicalに「ユーザーURLとデフォルトソートキーを放り込んだリンクタグ」を代入

ユーザーページ以外の単一ページの時 : $canonicalを空にする。

これで一応、どんなソートキーの組み合わせでユーザー情報を表示しても、検索エンジン側は、デフォルトソートキーで表示されるページを正しいページとして理解してくれる筈です。

少々気になっているのが、デフォルトソートキーで表示された(正しい)ページにも、自分自身を指定するcanonical属性がセットされてしまう事ですが、他でcanonical属性を導入しているページを何件か見たところ、自己指定を特に回避しているわけでは無いようですので、問題なさそうです。

この属性については、検索エンジン側も、参考情報として使用する程度の扱いのようなので、しばらくはこれで良いと考えています。

引き続きgoogleさんからの重複指摘をトレースしてみたいと思います。

同じカテゴリのエントリー

トラックバック(0)

トラックバックURL:

コメントする

ARCHIVES