ぼやき

9

WordPress を Yahoo! ブログ検索にインデックスさせる戦線、定期報告です。
昨日は残念ながら、 Yahoo! ブログ検索のクローラ Y!J-BSC/1.0 は 1 度も来てくれませんでした。なので、昨日手を加えた点についての検証はできず。

しかし、そんなあさこんに朗報が! なんと goo ブログ検索にインデックスされたのです! やった! 今朝( 2009 年 5 月 19 日午前 8 時 58 分)現在、 12 記事がインデックスされました!
Apache ログを調べてみると、 goo ブログ検索のクローラ gooblog/2.0 が午後 12 時前と午前 12 時前の 2 回アクセスしにきてくれてました。その時点までの記事がインデックスされてます。うれしい。

ここで goo ブログ検索インデックスへ試行錯誤をまとめてみようと思います。

1) Ping のユーザーエージェント( User-Agent )の変更
まず、一番大事なのが、 PING の飛ばし方。 goo ブログ検索は WordPress を目の敵のようにしているようで、 WordPress の標準で PING を飛ばすと受け取ってはくれるけれど、無視されるみたい。それは PING 情報に含まれている ユーザーエージェント( User-Agent )を見て判断しているようです。
→ Kuwata ’ s Blog くわぶろ: WordPress からの更新 ping が goo ブログ検索に拒否される問題を回避する方法

なので、上記サイトを参考にユーザーエージェント( User-Agent )を書き換えます。わたしは、 Smart update pinger というプラグインを使っているので、 smart-update-pinger.php の 136 行目を下記のように書き換えます。
前: $client->useragent .= ' -- WordPress/'.$wp_version;
後: $client->useragent = '1010uzublog/1.0.0';

○○ blog のような名前の方がいいようです。
この改変を加えることにより、初めて gooblog/2.0 の誘致に成功。しかし、この改変だけでは gooblog/2.0 ボットはトップページだけ見て帰ってしまいます。
初めての訪問のときは robots.txt を見に来るのですぐにわかります。

2) HTML タグ内にて日本語を宣言
WordPress は海外で発達した Blog システムですので、海外でつくられた テーマを流用していると、 HTML タグにて日本語宣言が抜けていることが多いです。これを補っていやります。日本語サービスだ、ということをボットに教えてあげましょう。
前: <html xmlns="http://www.w3.org/1999/xhtml">
後: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

3) meta タグ内から、「 WordPress 」の文字列を削除する(念のため)
WordPress では、 meta タグ内で WordPress のバージョンが下記のように宣言されています。
<meta name="generator" content="WordPress 2.7.1" />

これは「 <?php wp_head(); ?> 」から出力されるようです。でも「 <?php wp_head(); ?> 」をまるっと削除してしまうと、他の必要な meta タグ情報も削除されてしまいます。なので下記の方法をとります。

テーマフォルダ内 functions.php (なければ作成し)に下記コードを書き加えます。
remove_action('wp_head', 'wp_generator');

→近頃の、とある R 。: wp_head() タグからイロイロ出る
上記サイトを参考にいたしました。これは、セキュリティ的にもよいようです。
もちろんテーマの head.php に記載がある場合はそれも削除します。

4) index.rdf をリダイレクト
goo ブログ検索のクローラ gooblog/2.0 は、トップにアクセス後、決め打ちで /index.rdf にアクセスしてきます。なので、 /index.rdf を /feed/rdf にリダイレクトします。

→ WordPress. 日本語: WordPress Feeds アドレスの変更
上記サイトを参考に、 .htaccess ファイルに RewriteRule で記述をしたのですが、うまくリダイレクトしてくれなかったので、乱暴だけれど下記のような記述としました。 .htaccess ファイルの書き方勉強せねば。

Redirect temp /index.rdf http://www.1010uzu.com/feed/rdf

書き換えた後、ブラウザでリダイレクトされているか確認しましょう。

5) meta タグ内の <link rel="alternate" の URL を index.rdf に変更
<link rel="alternate" type="application/rss+xml" title="RSS" href="<?php bloginfo('url'); ?>/index.rdf" />

6) feed-rdf.php の時間、日本語記述の追加
WordPress の feed ファイルは、すべて UTC (協定世界時)で書かれています。これを日本のローカル時刻に書き換えます。以下、 feed-rdf.php の変更箇所。
・ 26 行目
前: <?php echo mysql2date('Y-m-d ¥ TH:i:s ¥ Z', get_lastpostmodified('GMT'), false); ?>
後: <?php echo mysql2date('Y-m-d ¥ TH:i:s+09:00', get_lastpostmodified(), false); ?>

・ 44 行目
前: <?php echo mysql2date('Y-m-d ¥ TH:i:s ¥ Z', $post->post_date_gmt, false); ?>
後: <?php echo mysql2date('Y-m-d ¥ TH:i:s+09:00', $post->post_date, false); ?>

・ 13 行目〜 21 行目あたり(念のため)
前:
<rdf:RDF
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  <?php do_action('rdf_ns'); ?>
>

後:
<rdf:RDF
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xml:lang="ja"
  <?php do_action('rdf_ns'); ?>
>

・ 27 〜 31 行目削除(念のため)
<?php the_generator( 'rdf' ); ?>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>

下記サイトを参考に以上変更をさせていただきました。ありがとうございます。
→ Kuwata ’ s Blog くわぶろ: WordPress の投稿記事を Yahoo! ブログ検索にインデックスさせる方法

その他、 MT 形式の Blog の RSS と見比べて、同じになるように適宜修正を加えました。
・ 26 行目後に追加
前: <description><?php bloginfo_rss('description') ?></description>
後: <description><?php bloginfo_rss('description') ?></description>
<dc:language>ja</dc:language>

さて、本命の Yahoo! ブログ検索ですが、クローラが来てくれないことにはどうしようもない。投稿記事数が多すぎたのかなぁ。 Yahoo! Slurp/3.0 は来てくれているから、 Yahoo! 検索にはクロールされていると思うのですが。

*追記*
上記方法にてインデックスされた記事が goo ブログ検索結果画面にて 9 時間ずれた時刻になってしまった不具合を発見いたしました。下記にて修正方法を公開しておりますので、合わせてご覧ください。
【考察】 goo ブログ検索にインデックスされた日時が 9 時間遅れている件
【解決】 goo ブログ検索にインデックスされた日時が 9 時間遅れている件【 RSS2 の時刻修正】

*追々記*
Yahoo! ブログ検索にもインデックスされるようになりました。詳しくは下記の記事をご覧ください。
【ついに成功】 Yahoo! ブログ検索にインデックス! 〜 WordPress を Yahoo! ブログ検索させる方法 その 9 〜
【まとめ】 WordPress を Yahoo! ブログ検索させる方法 その 10

関連記事