2009.02.19(Thu)
URLを正規化するcanonical属性をFC2ブログに導入してみた

Google、Yahoo!、Microsoftの主要3つの検索エンジンがこぞってURLを正規化する「canonical属性」を導入したという訳で、FC2ブログでも導入できないか試してみました。
ちなみに以下のがそのニュースです。
検索エンジン3社、正しいサイトURLを認識させるcanonical属性を導入(URLの正規化) :: SEM R
http://www.sem-r.com/09/20090213153711.html
検索エンジン大手3社、URL正規化タグを揃って導入:マーケティング - CNET Japan
http://japan.cnet.com/marketing/story/0,3800080523,20388248,00.htm
URLを正規化とは何なのかというと、例えば検索クエリのパラメーターがついていた場合URLの末尾に「?=<検索語>」となったり、プロモーション方法を区別するために引数をURLの末尾につけて「?=promoxxxx」とする場合に、検索エンジンは本来のURL「sample.html」とこれらの引数が付与されたURLとの区別が難しくなってしまいます。
そこで「正しいURLはこれだよ」と検索エンジンに教えてあげる。それがURLの正規化であり、canonical属性の役割であり、本当は単一のURLのはずなのに複数のURLになる可能性がある場合に、本来のURLを検索エンジンに教えてあげるという訳です。
基本的な導入方法は簡単で、htmlファイルのhead部(~ の間)に以下を記述するのみです。
<link rel="canonical" href="http://amatoboss.blog31.fc2.com/" />FC2ブログで導入するには、まず正規のURLとは違ったURLになる場合、つまり「?=xxxxx」等となる場合を洗い出さないとなりません。
そこで調べてみると、大きく「月間の一覧ページ」「tag検索の場合」「キーワードで検索された場合」「カテゴリの一覧ページ」の3つが洗い出されました。
tag検索の場合は「http://amatoboss.blog31.fc2.com/?tag=<タグ>」という形になり、キーワード検索された場合は「http://amatoboss.blog31.fc2.com/?q=<検索後>」という形になります。
また、月間一覧のページ「?date=yyyymm(dd)」と「blog-date-yyyymm(dd).html」という2つの形式を取ります。
カテゴリの一覧ページは「blog-category-no.html」と「http://amatoboss.blog31.fc2.com/?cat=no」(noはカテゴリに与えられた番号)とURLが2種類あります。
tag検索、キーワード検索
tag検索、キーワード検索は非常に簡単で、それぞれ「tag検索の場合」「キーワード検索の場合」にだけ表示するFC2ブログの変数「<!--tag_area-->」と「<!--search_area-->」を使い以下のように記述します。
「?以降の変数は不要と考え、「canonical属性」でトップページを指定します。
<!--search_area--><link rel="canonical" href="<%url>" /><!--/search_area-->
<!--tag_area--><link rel="canonical" href="<%url>" /><!--/tag_area-->月間記事一覧、カテゴリ一覧
月間一覧のページの場合は、月間(日間)一覧を表示する変数「<!--date_area-->」はあるのですが、月間一覧ページのURLを表示する変数が無いため断念。
また、カテゴリ一覧ページも「<!--category_area-->」というカテゴリ一覧ページの場合のみに表示する変数はあるものの、カテゴリ一覧ページのURLを表示する変数が無いため断念。
一応試したコードを以下に示します。上二つはカテゴリがある分だけ表示されてしまいます。つまり3つカテゴリがあったら3つ連続で表示されてしまう結果でした。
一番最後のものはページが表示すらされなくなってしまいます。
<!--category_area--><!--category--><link rel="canonical" href="<%category_link>" /><!--/category--><!--/category_area--><!--category_area--><!--topentry--><link rel="canonical" href="<%topentry_category_link>" /><!--/topentry--><!--/category_area--><!--category_area--><link rel="canonical" href="<%url>/blog-category-<%cno>.html" /><!--category_area-->トップページとエントリー個別ページ
トップページとエントリーの個別ページは、他のページから引数が付与されてアクセスされる可能性があるので念の為、以下のように指定しました。
<!--topentry--><!--permanent_area--><link rel="canonical" href="<%topentry_link>"/><!--/permanent_area--><!--/topentry-->
<!--index_area--><link rel="canonical" href="<%url>" /><!--/index_area-->カテゴリ一覧ページと月間(日間)一覧ページで指定できなかったのが消化不良で残念です。どなたか解決方法をご存知でしたら教えてください。
関連エントリー
Loading
この記事のトラックバックURL
この記事へのトラックバック
| BLOGTOP |


※コメントは承認するまで表示されません。