« iMac G5 噂の画像 | メイン | BookmarkletをSafariでも使いたいの »

MT拡張:本日のリンク元

iMac G5 噂の画像 <前|次> BookmarkletをSafariでも使いたいの

HTTP_REFERERを取ってカウントと共に表示をやってくれるスゴイやつです。
YahooやGoogle等の場合に検索キーワードで整理しておいてくれるという便利機能も。
自分で作るより、検索した方が早くて便利な世の中に感謝。

MovableTypeでtDiary風「本日のリンク元」をやる

READMEに書いてある手順通りに設置すれば問題なく使えるハズ >Javascript版を選択しました
ところが一度目は設置失敗。
Apachのerrorログに「Premature end of script headers:~」と出るが、原因が特定できなくてずいぶんと悩んだ末に気づきました。
$LOGDIRは「Webサーバー内部での絶対PATH」とのことで、httpdサーバでの絶対パスかな?と思っていたのですが、これが勘違い。
サーバルート(/)からのパスでした。

「Main Index」や「Individual Entry Archive」での「ref_write.cgi」のURLは、Apacheでの相対パスでも絶対パスでもOK。今回は絶対パスで指定しておきました。

そうそう、おまじないの「#! /usr/bin/env perl」について。
envコマンドが環境変数PATHからperlを検索してくれるという便利な書き方。
envがインストールされているのが前提だけど、ディストリビューション混在環境では便利っす。

##以下追記##

実は設置して2ヶ月が経とうとしたころに気づいたのですが、YahooやGoogle等の検索サイトからのリンクが処理されていません(カウントされていません)。
どうやら“=”がURLに入っているとスクリプトがエラーになっているような感じです。
なんでだろ~?
まぁ、でも同様のことが指摘されているところをみると、ウチ固有の問題じゃなくて、何らかの不具合があるのかもしれないと…。

HTTP_REFERERの取得部分を修正することで対処。
対処方法はコメントのスクリプト例を参照して下さい。

トラックバック

このエントリーのトラックバックURL:
http://pamo.dip.jp/cgi-bin/blog/mt-tb.cgi/106

トラックバック一覧

» MT拡張:本日のリンク元(2)
送信元:独白
前回改造したMovableTypeでtDiary風「本日のリンク元」の機能で検索サイトからのリンクを検索キーワードで整理するというものがあるが、MT自身の検索については未対応なようですね。 そこで、ちょっと手を加えて自身のMTの検索も整理の対象にしてみました。 ref_write.cg...

» 感謝感激
送信元:にっきVer.20
しぶとく探した甲斐があったんですよ。 ↓にも書いたんですけど、XREAでMTの本...

コメント (3)

Takam:

URLに“=”が入っていると、@ARGVに入っているハズのデータが入っていないことが判明。
これは仕様なのかなぁ?その辺のところはGoogleちゃんに聞いても答えがみつからない…。

Takam:

@ARGVが使えないので、代わりに$ENV{'QUERY_STRING'}でHTTP_REFERERを取得することにした。

ref_write.cgiは50行目くらいから始まるところを修正
################################
# Processing arguments...
################################
if($MODE eq "ssiinclude" || $MODE eq "ssicmd"){
#SSI Include or SSI cmd

$filename=@ARGV[0];
$filename =~ s/\..*//;
$remote=$ENV{'HTTP_REFERER'};

} elsif ($MODE eq "javascript"){
#JavaScript

# $filename=@ARGV[0];
# $filename =~ s/\..*//;
# $remote=@ARGV[1];

$envq=$ENV{'QUERY_STRING'};
@envq = split(/\+/, $envq);

$filename = @envq[0];
$filename =~ s/\..*//;
$remote = @envq[1];

}

################################

ref_read.cgiも同じような箇所(45行目くらい)を修正
################################
# Processing arguments...
################################
if($MODE eq "ssiinclude" || $MODE eq "ssicmd"){

$filename = @ARGV[0];
$filename =~ s/\..*//;
$mode = @ARGV[1];

} elsif ($MODE eq "javascript"){

# $filename = @ARGV[0];
# $filename =~ s/\..*//;
# $mode = @ARGV[1];

$envq=$ENV{'QUERY_STRING'};
@envq = split(/\+/, $envq);

$filename = @envq[0];
$filename =~ s/\..*//;

$mode = @envq[1];

}

以上でJavaScriptで検索サイトからのリンクを取得できるようになるかと思います。
「perl初めて物語」なので間違いあったらご免なさい。

半年くらい、どうしても検索サイトからのリファラが
取れなくて、悩んでいたところこちらの記事で
怪しくもなんとか動くようになりました。
全然ちんぷんかんぷんだったのでコピペしただけで
動くようになって大変ありがたいです~

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


画像の中に見える文字を入力してください。

カテゴリー

PAMO Menu
イラスト 綾波レイ MIWO 独白 掲示板