link 要素の canonical 属性で URL を正規化する

メインサイト Neo's World で独自ドメインを取ったことに伴い、元の URL である http://neo.s21.xrea.com/ と、独自ドメイン https://neos21.net/ とで同じコンテンツが表示されることになってしまった。

neos21.netneo.s21.xrea.com でホスティングされているサーバを向いていて、同一資材をレスポンスしている。ドメインごとに別々のサーバでホスティングしているワケではなく、同じ資材に対して2つの URL が存在している状態なのだ。

どうやらこのように複数の URL で同じコンテンツが表示できる状態は SEO 的によろしくないそうで、link 要素で canonical 属性というモノを指定することで、正しい URL を知らせられるようだ。

他にもよくあるのは www の有無とかを検索エンジンに統一させるためにも、この URL 正規化という対処が有効らしい。

書き方は以下のとおり。

<link rel="canonical" href="https://neos21.net/index.html">

このような link 要素を書く。記載する URL はその HTML ファイルへの完全な URL である必要がある。なので他のページだったら、

<link rel="canonical" href="https://neos21.net/about/search.html">

のようにページごとに URL を書き換えてやらないといけない。以下は NG な書き方だ。

全ページに手作業で記述していくのは骨が折れるので、自分は静的 HTML をビルドする際に付け加えるようにしている。