canonical属性を使う
MediaWikiはひとつのページに同じ内容のページを複数置いている。
たとえば、印刷用バージョンやこの版への固定リンク*1がそう。
こんなのがたくさんあるから、重複コンテンツの宝庫と思われても仕方がない。
そこで、以下の拡張を使うことにする。
これを使うことで、canonical属性によるページの優先度を付けることが出来る。
たとえば、MediaWikiのメインページ*2を例に取ると、
というのがあって、この3つのページ全てにcanonical属性が"/メインページ"に向けられるようになる。
設定値
導入後、以下のような項目が現れた。
wgCanonicalNamespace = ""; wgCanonicalSpecialPageName = false;
おそらく、上で名前空間を指定できて、下で特別ページにも使うかどうかを決められると思う。
ハードリダイレクトとソフトリダイレクト
これはおまけ。
CanonicalHrefのいうソフトリダイレクトとハードリダイレクト
ソースコードの最初の部分にこういうのがある。
This extension prints out a link tag with a canonical url to the article, which handles Mediawiki's "soft" redirects much more elegantly.
"Mediawiki's "soft" redirects"がどういう意味なのかというと、おそらく#REDIRECT []
によるリダイレクトのことなんだと思う。
MediaWikiのリダイレクトはちょっと特殊で、別のURLにリダイレクトさせずに#REDIRECT []
で指定したページをそのままそのページに表示させる。
例えば、AというページとA'というページがあったとして、Aページに#REDIRECT [[A']]
と書くと、AのURLでA'の内容が表示される。
ということは、AとA'はMediaWiki上では同じページなのだけど、検索エンジンから見たら重複コンテンツになる。
そこでこの拡張を使うと、リダイレクト先のページ(A')にcanonical属性を付けてAとA'に差を付けることが出来る。
この文の後に"Hard" redirectsという言葉が出てくるけど、JavaScriptを使って強制的にリダイレクトすることを言っていて、AにアクセスしたらA'のURLにそのまま転送するということを指している。