link 要素の canonical 属性で URL を正規化する
メインサイト Neo's World で独自ドメインを取ったことに伴い、元の URL である http://neo.s21.xrea.com/
と、独自ドメイン https://neos21.net/
とで同じコンテンツが表示されることになってしまった。
neos21.net
は neo.s21.xrea.com
でホスティングされているサーバを向いていて、同一資材をレスポンスしている。ドメインごとに別々のサーバでホスティングしているワケではなく、同じ資材に対して2つの URL が存在している状態なのだ。
どうやらこのように複数の URL で同じコンテンツが表示できる状態は SEO 的によろしくないそうで、link
要素で canonical
属性というモノを指定することで、正しい URL を知らせられるようだ。
他にもよくあるのは www
の有無とかを検索エンジンに統一させるためにも、この URL 正規化という対処が有効らしい。
書き方は以下のとおり。
https://neos21.net/index.html
の場合
<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 な書き方だ。
- × 全ページに一律でトップページの URL を記述する
- ×
/index.html
のように、ルート相対パスや相対パスで記述する
全ページに手作業で記述していくのは骨が折れるので、自分は静的 HTML をビルドする際に付け加えるようにしている。