Blog

ブログ

MovableTypeのAtomフィードには、テストサーバーの情報がこっそり残ってしまう

MovableTypeの初期テンプレートセットには、「最新記事のフィード」という、Atom1.0形式のフィード用テンプレートが含まれています。
サイトから配信するRSSフィードは普通は「新着記事」になるので、よほどこってりしたカスタマイズをしない限り、このテンプレートをそのまま使うことになります。

しかし、テストサーバーで記事を入れ込み→本番サーバーに移行という流れで構築をしている場合、このテンプレートの扱いにはちょっとした注意が必要です。

「最新記事のフィード」テンプレートの14行目に、以下のようなコードがあります。

<id><$mt:EntryAtomID$></id>

MTタグ「<$mt:EntryAtomID$>」はAtomフィード内で各エントリーに一意のIDを振るために用意されているものです。

これが、再構築すると以下のような文字列に変換されるのですが、

tag:[記事を書いた時のブログのドメイン名],[記事の公開年]:[ブログトップのサーバー内相対パス]/[ブログID].[記事ID]

[記事を書いた時のブログのドメイン名]と、[ブログトップのサーバー内相対パス]は、ドメインやサーバーを変更してもそのままデータベースに残ってしまいます。

つまり、もしも http://exmaple.testserver.com/test/ というURLにテストブログを作って記事の入れ込みをしていた場合、本番サーバーへ移行した後も、

tag:exmaple.testserver.com,2010:/test//1.999

という文字列がAtomフィードに残ることになります。

AtomIDは一意の値を振るためのものなので、存在しないドメイン名が残っていても問題はないようですし、わざわざソースコードを見ない限り、このIDが一般の閲覧者の目に触れることはありません。
ですが、自社サーバーで作業していた場合などは、やはりテストサーバーのドメインは知られたくないところです。

対策としては、データベースを直接書き換える手も考えられますが、<$mt:EntryAtomID$>自体を使用せず、他のMTタグを組み合わせて同じような書式を作ってしまう方法が手っ取り早いです。

<id>tag:<$mt:BlogHost$>,<$mt:EntryDate language="en" format="%Y"$>:<$mt:BlogRelativeURL$>/<$mt:BlogID$>.<$mt:EntryID$></id>

上記のようにタグを書くと、再構築をした段階のドメイン・サーバーの情報を元にIDが再発行されます。