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=

など。公に提供しているものではないと思うので、真面目にやるなら自分で用意した方が良いでしょう。