覚え書きの重複コンテンツ
著
以前から、Zenbackの「関連する記事」のところに、同じ見出しの記事がかなりの頻度で重複して表示されていて、しかし双方のURLは異なるという謎の事象に気づいてはいました。基本的にこの覚え書きは自分専用の日記みたいなものなので、自分にとっての実用上それで問題が無ければまぁいいやと思っていたし、重複コンテンツが存在するがゆえにSEO的な評価の落ちることがあっても、気にはしないのですけれど......先日、@iwaim さんから
そういえば「覚え書き」の「関連する記事」内のリンクが重複しつづけているようです。大事なことという意味ではなさそう。
という指摘をいただいたのがきっかけで、改めてちゃんと確認しておこうと思いました。重複しているのは、Movable Type で言うところの Individual Entry Archive なページ。/blog/archives/ を覗いてみると、テンプレートの設定上、アーカイブマッピングで利用するアーカイブファイル名を エントリーID(桁数が6桁に満たないとき、0で埋めて表示).html というファイル名にしているのですが、なぜか 004326.html からいきなり 032852.html に飛んでいる......そしてファイルのタイムスタンプをみると、032852.html 以降は2011年12月25日のものが多い。2011年12月25日といえば、Movable Typeのメンテナンス完了という記事にあるように、データベースを変更した日なんですね(なぜクリスマスの日にMTとかDBなんかいじってるんだ......)。理由はわからないけれども、MySQLへの移行が完了したときに、エントリーID が 1 からではなく 32852 から始まってしまった、とまぁそういう状況のようです。コンテンツが重複しているのは、つまり2011年12月25日より前に生成された個別エントリーアーカイブ、ということになります。
さて、どうしたものか。MySQL移行前に生成された 000001.html 〜 004326.html が、きっちり 032852.html 〜 037177.html に1対1対応で重複しているならまだしも、どうやらそうでもないようで、後者にlink要素でrel属性値canonicalを与え前者と関連づけるというのを機械的に行うのは無理そう。せっかくZenbackがrel="canonical"に対応しているから(参考:URLを正規化する rel="canonical" 属性に対応しました - Zenbackブログ)、これさえ実現できれば一番手っ取り早そうだったのに。そもそも エントリーID.html って命名が(根本原因は謎のままだけど)よろしくなかったわけだから、いっそ別の命名規則で全てのエントリーを出力し直すというのも一案ではあるけれど、さすがに過去のすべての(MySQL移行後のものも含む)個別エントリーアーカイブへの外部からのリンクを無効化するというのはちと乱暴が過ぎるかと。そんなこんなで、結局は放置せざるを得ないかなぁと思う今日この頃です。