PukiWikiをで外部のサイトへのリンクを踏むと、リファラが送信されてしまいます。これを防ぐパッチがありますが、内部・外部でWiki側のURLが複数存在する場合に対応するコードを追加し、外部へのリンクのみ緩衝用のページ(googleやhatena, ime.nu等)を介するパッチを書きました。
diff -ur a/lib/make_link.php b/lib/make_link.php
--- a/lib/make_link.php 2006-10-22 05:40:25.000000000 +0900
+++ b/lib/make_link.php 2008-11-22 16:07:46.000000000 +0900
@@ -385,7 +385,20 @@
} else {
$rel = ' rel="nofollow"';
}
- return '<a href="' . $this->name . '"' . $rel . '>' . $this->alias . '</a>';
+ //! ----
+ //! jump via redirector for external pages
+ global $do_redirect_externals, $redirect_url, $script_urls;
+ if ($do_redirect_externals) {
+ $ru = $redirect_url;
+ foreach ($script_urls as $s)
+ if (strncasecmp($this->name, $s, strlen($s)) == 0) {
+ $ru = '';
+ break;
+ }
+ } else
+ $ru = '';
+ //! ----
+ return '<a href="' . $ru . $this->name . '"' . $rel . '>' . $this->alias . '</a>';
}
}
diff -ur a/pukiwiki.ini.php b/pukiwiki.ini.php
--- a/pukiwiki.ini.php 2006-10-22 05:40:24.000000000 +0900
+++ b/pukiwiki.ini.php 2008-11-22 11:28:52.000000000 +0900
@@ -116,6 +116,16 @@
// Specify PukiWiki URL (default: auto)
//$script = 'http://example.com/pukiwiki/';
+// Redirect URLs
+$do_redirect_externals = true;
+$redirect_url = 'リダイレクト用のURL';
+$script_urls = array(
+ 'http://192.168.1.100/',
+ 'http://example.com/wiki/',
+ './',
+ '/',
+ );
+
// Shorten $script: Cut its file name (default: not cut)
//$script_directory_index = 'index.php';
PukiWiki 1.4.7_nofb_utf8対象です。
リダイレクトしてくれるのは
- http://a.hatena.ne.jp/go?
- http://ime.nu/
- http://www.google.com/url?sa=D&q=
など。公に提供しているものではないと思うので、真面目にやるなら自分で用意した方が良いでしょう。

