FeedBurnerを使いながらページランキングの記事タイトルをRSS自動設定する方法

ページビューがあまり伸びないので?ACR WEBページランキングというブログパーツを導入してみました。

ページランキングというのは、そのサイトでアクセスの多かったページをランキングで表示してくれるパーツです。
検索すると色々ありましたが、今回はACR WEBのページランキングにしました。

基本的に導入はすごく簡単です。
  1. 新規登録ページから登録
  2. ランキングを獲りたいページに専用の解析タグを貼る
  3. ランキングを表示したいページに専用のコードを貼る
これだけです。ランキングの表示が15日以上無い場合は削除されることだけ注意すれば(実際削除されました…)全然難しくありません。

このままだとランキングされたページタイトルがURLのままなので、URLを文字列(ページのタイトル)に置換する必要があります。
しかし、膨大なブログの記事をひとつひとつ手作業で置換するには無理というもんです。そういう人のために、
ACR WEBのページランキングにはRSSフィードによるURLの自動置換という機能が用意されています。

RapidWeaverのブログはRSSフィードを自動生成してくれるので、ブログのRSSのアイコンの所で Control+クリック でリンクをコピーして、そのアドレスを
管理画面/タイトル自動設定/RSSファイルのURL
の所に入力すればOKです。

通常ならばこれで良いのですが(実際には
FeedBurnerを利用しなくてもタイトルを自動設定出来ないので最後まで読んで下さい。)、このサイトのRSSフィードにはFeedBurnerを使っているので、ちょっとややこしいです。その辺の詳しい話は以前のエントリで確認して下さい。(FeedBurnerを利用してRSSフィードをカスタマイズする

FeedBurnerを利用している人は分かると思いますが、RSSフィードにFeedBurnerを利用すると、RSSのアイコンの所で Control + クリック してコピーしたアドレスの

http://rapidweaver.recasin.com/files/blog.xml
ではなく、
http://feeds.feedburner.jp/rapidweaverfan

というFeedBurner専用のRSSフィードにアクセスするようになっています。RSSフィードをカスタムしないでFeedBurnerを利用している人は、はじめから http://feeds.feedburner.jp/rapidweaverfan のようなアドレスにアクセスしていると思います。

そして、RSSリーダーなどから記事にアクセスする時には、

http://rapidweaver.recasin.com/files/081006.php
というアドレスではなく、
http://feeds.feedburner.jp/~r/rapidweaverfan/~3/4287916/081006.php

というアドレスにアクセスしています。

結果、ページランキングのURLの自動置換に
http://rapidweaver.recasin.com/files/blog.xml というRSSフィードを読み込ませても、設定画面に表示されるタイトル反映処理されたアドレスは http://feeds.feedburner.jp/~r/rapidweaverfan/~3/4287916/081006.php 、ランキングパーツには http://rapidweaver.recasin.com/files/081006.php というアドレスが表示されるので、置換処理ができずページランキングはURLで記事が表示されたままになってしまします。

どうしようも無くなったので検索したらとても参考になるサイトを発見しました。
人気ページランキングのタイトル自動設定がうまく機能していなかったわけ - KUMA TYPE

このサイトによると、ページランキングのIPアドレスを調べ、RSSフィードにアクセスしてきた際に元のRSSフィードにアクセスさせればいいようです。
それを実現するためには.htaccessというものを利用するのですが、
FeedBurnerを利用してRSSフィードをカスタマイズする というエントリに.htaccessについて書いていると思うのでそちらを見て下さい。

まず、ページランキングのIPアドレスを調べる方法ですが、自分の管理画面のドメインをコピーします。私の場合は…

http://pranking10.ziyu.net/edit.php
というURLになっているので、
pranking10.ziyu.net

の部分ですね。

次に、
XWD.JP - IP-ドメイン変換 - というサイトにアクセスして、ドメイン名から → IPアドレス変換という所に先程のURLを入力します。結果ページランキングのIPアドレスは「219.94.181.16」という事がわかりました。これは、割り振られたサーバー毎に違うので、この数値のまま利用しないで下さい。

で、実際に.htaccessをどう書くのかというと、

RewriteEngine onRewriteCond %{HTTP_USER_AGENT} !FeedBurnerRewriteCond %{REMOTE_ADDR} !^219\.94\.181\.16$RewriteRule ^files/blog?\.xml$ http://feeds.feedburner.jp/rapidweaverfan [L,R]

こうなります。ポイントは3行目です。ここで、ページランキングのIPアドレスを弾いて元々のRSSフィードを読み込ませています。KUMA TYPEさんの説明によると…

1行目:mod_rewriteエンジンの起動
2行目:ユーザーエージェントがFeedBurner以外だったら
3行目:リモートアドレスが219.94.181.16以外だったら
4行目:files/blog.xmlへのアクセスをhttp://feeds.feedburner.jp/rapidweaverfanにコード301でリダイレクト

だそうです。4行目の
[L,R] はデフォルトで301リダイレクトだったとおもうので、301の記述が無くてもOKだとおもいます。以上で完了です。



ところがドッコイRapidWeaverはそんなに甘くない!(笑)




ここまでやってもタイトルの自動設定は上手くいきませんでした。どういう事かといいますと、RapidWeaverで作られたブログは、例えば
http://rapidweaver.recasin.com/files/081006.php という記事にRSSリーダーからアクセスすると、ブラウザには…
http://rapidweaver.recasin.com/files/081006.php#unique-entry-id-299
というアドレスが表示されてしまいます。RapidWeaverの仕様でエントリ毎に独自のIDが割り振られるようです。(余談だが適当にIDを変更しても問題なくページが表示される。意味が分からない仕様。)

これだと、ページランキングの設定画面では
http://rapidweaver.recasin.com/files/081006.php#unique-entry-id-299 、ランキングパーツには http://rapidweaver.recasin.com/files/081006.php が表示され、またもやページタイトルの取得が出来ません。FeedBurnerを利用していなくてもタイトルの自動設定は出来ないということが判明しました…。

この問題をクリアするためには、RSSフィードを直接編集して、全てのブログエントリに付いている
#unique-entry-id-xxx の部分を削除するしかありません。
しかし、これを手動で1つずつ削除するのは現実的ではないので、ターミナルを使ってまとめて削除します。(2ちゃんねるの
Macのこんなソフト・アプリを探してますスレの方々に教えて貰いました。本当に感謝です。)

はじめに、アップしたRSSファイルをデスクトップにダウンロードするか、ローカルに書き出します。(ローカルの方は試していません。)
次に、ターミナル(アプリケーション/ユーティリティー/ターミナル.app)を起動し、

perl -i.bak -pe 's/(?<=php)#.*?(?=<)//g' /Users/ホーム名/Desktop/RSSファイル名.xml

と入力します。(ページの幅の関係で折り返して表示されているかも知れませんが実際には改行されていません。)

デスクトップにダウンロードするのは、ファイルまでのパスに日本語が入らなくするためです。入力を簡単にするには、

perl -i.bak -pe 's/(?<=php)#.*?(?=<)//g'

をコピペして行の最後にデスクトップのファイルを直接ドロップしてやると、自動でそのファイルまでのパスが表示されます。「g'」の後には半角スペースが1つ入ります。RSSのファイル名は元のファイルとは違う名前にした方が良いと思います。

コードを入力したら、return をおして処理を実行します。デスクトップのファイルを開いて該当箇所が削除されているか確認して下さい。(同時にバックアップファイルが生成されています。)
問題がなければ直接サーバーにアップして、ページランキングからタイトル自動設定をしてください。これで本当に完了です。

コツとしては、ブログのRSSをトップページだけ出力する設定にしている場合はそのチェックを外してブログを再度アップすること。フィード名を変更してアップしておくと良いかも知れません。その後に元のフィード名に戻すことを忘れないで下さい。

後は、カテゴリ別の記事は仕様上、ターミナルからは編集できないので、必要があればページランキングの設定画面から手動でURLの置換をして下さい。私はURL置換していないページは表示しない設定にしています。
もうひとつ、タイトル自動設定で設定した項目は一度に削除する機能が無いようです。(私は何度も失敗しましたので膨大な項目を1つずつ手作業で削除するハメになりました。)

この、ページランキング用のRSSを作成する方法は完全手作業なので、新しく記事をアップする度にこの作業を繰り返すかマメに手動でURL置換していくことになりますが、現在のところこれがベストな方法だと思います。
他に方法がありましたらご連絡頂けるとうれしいです。長々と書きましたがこれで本当に終わります。

blog comments powered by Disqus