RSS feed を FeedBurner に切り替えた際の手順メモの詳細編。
※以下、MT 3.33 でのお話
2、4、5を詳細に紹介。
対象の feed ファイルの名前を変える
Movable Type で「テンプレート」の「インデックス」から自サイトの feed テンプレートを編集する。
「出力ファイル名」を変えて(例:atom.xml → atom_fb.xml)、「テンプレートの内容」にある「self」記述を旧名から新名に変える。
旧:
新:
FeedBurner 経由の feed を購読してもらえるように設定(オプション)
新しい feed が登録してもらえるように、サイトの構成を変更。
各種テンプレートを編集し「Syndicate this site (XML)」などの部分を新 feed の URL で置き換える。
さらにブラウザのアドレスバーに出てくるアイコン(下図)でも選べるようにする。
各種テンプレート内にある
を以下のような感じに書き換える。(追加でも可)
実はこの手順は、次の「既に購読されている feed のリダイレクト」を実施すれば、やらなくてもOK。
面倒な人は省いてください。
既に購読されている feed のリダイレクト
ここまでの手順では新規に購読される分にしか対応できておらず、既に購読されている旧 feed の分は FeedBurner の恩恵を受けられない。
旧 feed を購読している人も FeedBurner 経由にするには、「.htaccess」によるリダイレクトを設定すればOK。
「.htaccess」に以下のような感じで、旧 feed(左)と新 feed(右)を記述する。
※表示の関係で二行になってますが、実際には一行で書いてください。念のため
ここで重要なのは「旧 feed のところには改名前のファイル名を書く」ということ。
改名後のファイル名を書いてしまうと、リダイレクトがループになってしまって各方面に怒られる。
また、リダイレクトを実施すると新旧切り替わり時に大半の RSS reader が旧記事(おそらく既読)を再表示してしまうので、購読者に前もって断っておくのがマナーかも。
#今回やってなくてスミマセン…
Google が FeedBurner を買収していたことを今更知ったのを機会に、FeedBurner で RSS を配信してみる。
手順は以下の通り。
※Google AdSense のアカウント持っていると、FeedBurner のアカウントもそのまま作れる
諸々の設定で力尽きたので、詳細は次回にゆずることにさせてください。
もし「今まで見られていた feed が見られなくなった!」とかあったら、遠慮なくコメントで指摘願います。
定期的に訪れる「広告配置見直し欲求」におそわれて、色々やってみた。
「その前に更新頻度と内容だろ!」という指摘はごもっともで、耳が痛い。
でもページレイアウトって楽しいから、ついつい見直したくなっちゃうんだよね…。
Movable Type のプラグイン、SpamLookup をうまく使うことによって、ブログ閲覧者にスパムを見られてしまう事態は避けられるようになった。
しかし、日に500件近いコメントスパムが来るため、結局 DB は圧迫されっぱなし。
こうなってくると、悪い人にはコメント/トラックバックさせないという強硬手段が必要になってくる。
そこで色々探すうちに、非常に有効なプラグインである「MT-Keystrokes」に(ようやく)出会った。
仕組みは簡単。
コメントのテキストエリアに文字を入力する or 「投稿」ボタンを押す、といった操作を経由していないコメントの投稿自体を失敗させるというもの。
投稿者側の閲覧設定で JavaScript が ON になっている必要があるが、うちのサイトは他の理由で既に ON の方しか歓迎していないので、問題ない。
以下あたりを見ると導入できる。
「導入できる」のだが…。
実はこの「MT-Keystrokes」、「導入したら全てのコメントが保留だって言われるようになった」との悲鳴が一部であがっている。
「保留だ」と言われるものの実際には保留状態にはならず、コメントが失われるという症状を示す。
私も同じ状態にハマったのだが、なんとか解決できたので、解決方法を以下にまとめておく。
#かなり今更だが…
原因の可能性は以下の四つ。
1〜3はいいとして、問題は4。
実は keystrokes-0.1.5.zip と keystrokes-0.1.4.zip、MT3.33 と MT3.2 では、組み合わせによって動作が異なる。
MT3.2 | MT3.33 | |
---|---|---|
keystrokes-0.1.4 | 動作する(エラーログだけ出る) | 動作する(正常ログだけ出る) |
keystrokes-0.1.5 | 動作する(正常時に余計なエラーログが出る) | 動作しない(ログには何もでない) |
この動作の違いは keystrokes-0.1.5 の「keystrokes.pl」に含まれる以下の行にある。
$keystrokes = $q->param($FIELD_NAME) if $q->param($FIELD_NAME); $eh->error("keystroke failed: " . $obj->email) if $LOG && $keystrokes < 1; $eh->error("keystroke id: " . $obj->blog_id); return $keystrokes > 0
この行は MT の仕様的に不必要というかマズイ記述。
MT3.2 では実装者の意図(≠MTの仕様)通りに動作してしまうが、MT.pm の run_callbacks あたりが変わった(と思われる)MT3.3 以降では、動作しないように(=仕様通りに)なったっぽい。
そこでその行をコメントアウトしてみると以下のようになった。
MT3.2 | MT3.33 | |
---|---|---|
keystrokes-0.1.5 改 | 動作する(エラーログだけ出る) | 動作する(正常ログだけ出る) |
現在「MT-Keystrokes」のホームページのリンクからダウンロードできるのは keystrokes-0.1.4.zip になっている。
上のような結果による影響かも知れない。
keystrokes-0.1.5.zip は直接 URL を打てば入手できるので、入手後に上述の修正を入れれば、十分使える。
0.1.4 と 0.1.5 の違いは些細なので、気にならない方は 0.1.4 を使われると良いだろう。
ちなみにこのサイトは MT3.33。
エラー時のログが出ない(=引っかかったコメントスパムが確認できない)のが寂しいので、上述の部分を以下のように変更して使っている。
$keystrokes = $q->param($FIELD_NAME) if $q->param($FIELD_NAME); $app->log({message => $app->translate("Comment save failed with [_1]", "keystroke failed"), blog_id => $obj->blog_id, class => 'comment', level => MT::Log::ERROR() }) if $LOG && $keystrokes < 1; return $keystrokes > 0
「MT-Keystrokes」プラグインによって、ここ数日のコメントスパムは完全にシャットアウトされている。
フィルタリングの対象にさえならないという爽快感。
これで当サイトのコメントスパム対策は終了と言っていいだろう。
ちなみにこの「MT-Keystrokes」、MT4 系では動かないという説があるのだが…(つづく?)
.htaccess による IP アドレスフィルタリングでスパムを防ごうとしていたのだが、これにはいくつかの問題点があった。
そもそも自分一人の力で何とかしようというのが少々傲慢だった、ということかと。
で、今回(ようやく)目をつけたのが Movable Type(ver.3.33)が元々持っているプラグイン、SpamLookup。
今までは大して活躍していなかったので無視していた。
実はコレ、デフォルトだと設定がゆるめなので、厳しくするにはカスタマイズが必要だった。
↑の設定をそのままに採用してみたが、まだ少しすり抜けてくる輩が居るので、「アドレスのチェック」の「ブラックリスト」に「all.rbl.jp」を追加した。
これにより、大半のスパムが迷惑コメント/トラックバックとしてフィルタリングされるようになった♪
ところで、SpamLookup の「ブラックリスト」に何でもかんでも登録すればいいかというとそうでもない。
特に…
で言及されている「zen.spamhaus.org」などは…
で解説されているように、かなり乱暴に IP アドレスが登録されているようなので、DNSBL は自己責任で注意して取り扱ったほうがよさそうだ。
#ちなみに「zen.spamhaus.org」には、私が今使っている IP アドレスも登録されてます。ウフ
ともあれ、SpamLookup をうまく使うことによって、ブログ閲覧者にスパムを見られてしまう事態は避けられるようになった。
しかし、まだそれなりの数のスパムが保留状態となって登録されてしまう。
また迷惑コメント/トラックバックとして判定されるものの投稿は受け付けてしまうので、結局 DB を圧迫する事態はあまり改善していない。
こうなってくると、悪い人にはコメント/トラックバックさせないという強硬手段が必要になってくるわけだが…(つづく)