トラックバック受け取り実験中 (WordPress ME 1.2.3)

2004年12月31日 - 9:27 PM | このエントリーをブックマーク このエントリーを含むはてなブックマーク | Tweet This

ここのサイト、(3年間無料の条件で借りているので文句が言いにくい)サーバの Apache のバージョンが古過ぎるためにこれまでトラックバックを受け取る事ができなかったのだけれど、今日 WordPress ME のスクリプトを少しだけ書き換えてみたところ、ついに「はてなダイアリ」からのトラックバック記録に成功しました(このコメント欄参照)。でも、本当にこれで良いのかあんまり自信ないので、うまくいっているかどうか実験手伝ってください。このエントリにトラックバックするのも良いですし、過去にここのサイトにリンクして下さった方は、以前の記事からのトラックバックを送り直してくださってもOKです。
スクリプト修正方法については、WordPress の全体像が良く分かってないし PHP 自体あまり使ったことがないので自信がないのですが、もしかしたら誰かの参考になるかも知れないので以下に載せておきます。わたしの言う通りにプログラムを修正した結果何か問題が起きても知りませんよっと。また、その方面に詳しい人から「この修正法は危険だ」という指摘があればすぐに消しますので、そちらの方の連絡もお願いします。とはいえ、エラそうに言うほど大きな変更ではないですが…
【トラブルの内容】
WordPress Me 1.2.3 (及び以前のバージョン)において、他のサイトからのトラックバックの受け取りができない。トラックバックの URL を直接ブラウザで指定すると、404 File Not Found. のエラーを返す。
【トラブルの主な原因】
Apache の設定で、AcceptPathInfo が Off になっている。このため、http://www.foo.com/trackback.php/12 という URL が指定された時、trackback.php というファイルではなく、存在しない trackback.php ディレクトリもしくは trackback.php/12 というファイルを Apache が探しに行くため、File Not Found. のエラーが起きる。
【簡単なトラブル回避法】
.htaccess ファイルに AcceptPathInfo On というラインを付け加える。ただし、AcceptPathInfo ディレクティヴに対応しているのは Apache 2 以降のみ。当サイトが使用している貸しサーバは古いヴァージョンの Apache を使用しているため、この方法ではトラブル解決できない。
【ただ今実験中の怪しげなトラブル回避法】
trackback.php/12 ではなく trackback.php?p=12 という形式にトラックバック URL を変えれば良い。WordPress ME 1.2.3 において必要な変更点は、以下の通り。
1)/wp-includes/template-functions-comment.php ファイルのうち、

$tb_url = get_settings(‘siteurl’) . ‘/wp-trackback.php/’ . $id;

と書かれた部分を、

$tb_url = get_settings(‘siteurl’) . ‘/wp-trackback.php?p=’ . $id;

と書き換える。
2)/wp-trackback.php ファイルのうち、

$tb_id = explode(‘/’, $_SERVER[‘REQUEST_URI’]);

と書かれた部分を、

$tb_id = explode(‘p=’, $_SERVER[‘REQUEST_URI’]);

と書き換える。
これだけ。

5 Responses - “トラックバック受け取り実験中 (WordPress ME 1.2.3)”

  1. ひびの まこと Says:

    トラックバック成功したみたい!
    ということで、あけましておめでとうございます。

  2. Macska Says:

    やったー♪ どうやらあの修正でOKだったみたいですね。
    ありがとうございます。今年もよろしくね。

  3. rna Says:

    GJ!

  4. Macska Says:

    実験参加どうもありがとうですー> rnaさん
    これでもう大丈夫そうですね。

  5. アンドワークスBLOG Says:

    トラックバックの受付ができないのに気付いた
    最近、スパムのトラックバックが来ないと安心していたら、何とすべてのトラックバックを受け付けていないことがわかりました。ヒ非常に間抜けな話しです。
    原因をGoogleで調べていましたら、WordPressのXOOPSモジュールを開発しているのぶのぶさんのFAQにありました。