MTOSのトラックバックURLに手間をかけたみたときのメモ

この記事は、公開日時より1年以上経過しています。最新の情報のご確認をお願いします。

思っていた以上に成果がみられなくて、気休め程度のモノでしかないのだけれども、せっかくなのでメモとしておきます。

Movable Type のトラックバックスパム対策としては、トラックバックURLを通常のものとかえる、というのがあります。検索すれば大手なサイトはじめ様様なサイトで紹介されています。

今回トライしたのは以下の通り。

  • 環境変数、TrackbackScript でトラックバックURLを変更する
  • mt-tb.cgi をリネーム
  • mod_redirect で、 表示形式も [ siteURL/trackback/トラックバックid/適当な数字 ] に変更する

まず、環境変数 TrackbackScript をmt-config.cgi に記載。

TrackbackScript mt-trackback.cgi  # これは例であって実際のものとは違う

次に、実際のトラックバックスクリプトファイルのリネームを行なう

mv mt-tb.cgi mt-trackback.cgi

.htaccess ファイルに以下を追記(mt のシステムディレクトリを対象として)

RewriteEngine on
RewriteRule ^trackback/(.*)/[0-9]{3}$ /mtos5/mt-trackback.cgi/$1 [L]

これだけでは、出力が目的のURL構造になってないので、MTのトラックバックに関係するテンプレートを書き換える

<$MTEntryTrackbackLink replace="mt-trackback.cgi","trackback"$>/<$MTEntryDate format="%j"$>

format の %j というのは記事を作成した年から数えた日数を3桁の数字で出力するというもの(だったとおもいます。詳しくはMTの日付に関するリファレンスを参考にしてください)

これで再構築して完了、といきたいところだけれど、トラックバックオートディスカバリーの出力も考慮しないといけない。

MTEntryTrackbackData というファンクションタグなのですが、これが厄介で一旦、変数に格納してあげないとうまく文字列リプレイスが出来ない

<$MTEntryTrackbackData setvar="TrackBackData">
<MTIfPingsAccepted>
<mt:GetVar name="TrackBackData" regex_replace="/mt-trackback.cgi/([\d]+)/","trackback/$1/001">
</MTIfPingsAccepted>
<mt:var name="TrackBackData" value="" />

トラックバックIDの次のいわゆるダミーな数字(本当はMD5とかにしようと思ったけど鬱陶しいので却下)なのだけど、RewriteRuleで無視しているので、ややこしいことせずに直接001とか適当に指定しています。

以上で再構築して改造終わりです。