PukiWikiでいじったところ  

floatcontents  

floatcontentsでlist3が表示されないようにplugin.css中にdisplay:noneを入れた。

lib/html.php  

IE6を標準準拠モードで実行させるために、1行目に<xml>タグを出力しないようにしてみました。
IE6はどうやら1行目に<!DOCTYPE>がないと後方互換モードで動くらしいですね。やっかいなやつめ。

497     // Output XML or not
498     // If browser is MSIE, xml tag will not appear
499     if (UA_NAME != 'MSIE' && $type == PKWK_DTD_TYPE_XHTML)
                echo '<?xml version="1.0" encoding="' . $charset . '" ?>' . "\n";

ここではUA_NAMEがブラウザの種類が入っている定数らしいです。

mod_rewriteによる書き換え -- 2008/06/28  

.htaccessの設定  

Apacheモジュールのmod_rewriteでURLを書き換えてみます。例えば/?COOTで表示されるページを/COOT.htmlというURLで表示させることが可能になります。以前はGoogleなどの検索エンジンでは?が入ったURLだとインデックス化されにくいといわれていましたが、現在このサイトが登録されているところを見ると最近はあまり関係ないのかもしれません。
せっかく試してみましたのでメモとして残しておきます。

.htaccessに以下の行を追加
RewriteEngine on
RewriteOptions MaxRedirects=1
RewriteBase /
RewriteRule ^(.+)\.html$ index.php?$1 [L]
こんな風にすると正規表現(.+)\.htmlに一致する名前がindex.php?$1に変換されます($1にはマッチした文字列が入ります)。変換ルールは最後の行のRewriteRuleの部分ですね。末尾の[L]は「このルールに一致したらそれ以上変換しない」という意味みたいです。

リンクの書き換え  

.htaccessだけを書き換えただけでは、まだページ内にあるリンク先は?COOTのままです。
次にこれを何とかします。そこで、パフォーマンスが下がるかもしれませんが、出力されたHTMLのリンクを後から書き換える、作戦を試みます。つまり・・・

PukiWikiの出力 -> フィルタ -> 出力フラッシュ

というように行います。出力フィルタをかけてしまうわけですね。

lib/pukiwiki.phpの修正  

以上のやり方を実装します。変更するファイルはlib/pukiwiki.phpになります。
このファイルの末尾の

// Output
catbody($title, $page, $body);
exit;

となってる部分を修正します。

// Output
function rewrite_filter($buf) {
    $pat = preg_quote($GLOBALS['script'],"/");
    return preg_replace_callback(
               "/\"$pat\?(cmd=read(&|&)page=)?(((%[0-9A-F][0-9A-F])|\w)+)\"/",
               create_function('$m', 'return "/" . preg_replace("/%2F/","/",$m[3]) . ".html";'),
               $buf
           );
}

ob_start("rewrite_filter");
catbody($title, $page, $body);
ob_end_flush();
exit;

これで出力文字列がrewrite_filter()に渡され、preg_replace_callback()で変換された後に出力されます。
preg_replace_callback()で正規表現にマッチした部分文字列がcreate_function()で作成された無名関数に渡されて変換されます。この無名関数ではマッチしたも部分文字列中の%2Fを「/」に変換して.htmlを付加する、という動作を行っています。

カウンターPluginのyesterdayのカウント数が0になる  

#counter

でトータル、今日、昨日、のアクセス数を表示できますが、昨日のカウントが0になります。どうやらcounter.inc.phpを修正する必要があるようです。

plugin/counter.inc.php
81     if ($counters[$page]['date'] != $default['date']) {
82         // New day
83         $modify = TRUE;
84 #       $is_yesterday = ($counters[$page]['date'] == get_date('Y/m/d', strtotime('yesterday', UTIME)));
85         $is_yesterday = ($counters[$page]['date'] == get_date('Y/m/d', strtotime('yesterday')));
86         $counters[$page]['ip']        = $_SERVER['REMOTE_ADDR'];
87         $counters[$page]['date']      = $default['date'];

84行目をコメントアウトして85行目の内容を追加しました。strtotime()の第二引数は省略されると現在時刻を取得するようです。

カスタムプラグイン  

2011-12-15 : 追加

プラグインを作ったときに、ファイル末尾に空行があると、ページ表示時に空行が入ってしまうので、文字化けすることがある。

*1 Apache2系列なら%2Fがあっても変換するオプションがあるようですが、httpd.confを編集する権限が必要になります
*2 しかもBioKidsが使っているサーバは1.3系列なのです