この記事は、公開日時より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とか適当に指定しています。
以上で再構築して改造終わりです。