at posts/single.html

PukiWiki で静的リンク

静的コンテンツに偽装 - cubic9.com を参考に、 PukiWiki で運用中の Wiki サイトを静的リンクにしてみた。

http://example.com/?FrontPage

というページが、

http://example.com/FrontPage.html

という URL でアクセスできるようになる。 この目的は2つ。どちらも Google 関係というのがなんとも。

  • Google Analytics で人気のページを確認できる。
  • ページランクが上がる(かもしれない)。

cubic9.com で公開されているパッチでは、いくつかのファイルに修正が加わっている。でも、 1.4.5 のパッチが無いことと、あまり多くのファイルを修正したくないことを考えて、最小限の修正だけで実現するようにした。

lighttpd.conf の修正

「/*.html」の URL を「/index.php?*」に変換する設定を加える。

url.rewrite                = ( "^/(.+)\.html$"    => "/index.php?$1" )

PukiWiki の修正

修正箇所は 2 ファイル。繰り返しになるけど、 cubic9.com に書かれているパッチを適用しただけ。

--- func.php.org        Mon Nov 21 23:49:25 2005
+++ func.php    Mon Nov 21 23:50:18 2005
@@ -695,4 +695,11 @@
                return md5($data);
        }
 }
+
+// PukiWikiの階層をディレクトリに偽装
+function anchor_replace($anchor)
+{
+  return str_replace('%2F', '/', $anchor);
+}
+
 ?>
--- make_link.php.org   Mon Nov 21 23:47:12 2005
+++ make_link.php       Mon Nov 21 23:54:05 2005
@@ -703,7 +703,8 @@
                // Hyperlinks
                $passage = get_pg_passage($page, FALSE);
                $title   = $link_compact ? '' : ' title="' . $s_page . $passage . '"';
-               return '<a href="' . $script . '?' . $r_page . $anchor . '"' . $title . '>' .
+    # return '<a href="' . $script . '?' . $r_page . $anchor . '"' . $title . '>' .
+               return '<a href="' . $r_page . '.html' . $anchor . '"' . $title . '>' .
                        $s_alias . '</a>';
        } else if (PKWK_READONLY) {
                // Without hyperlink (= Suppress dangling link)

追記

やっぱり寝ぼけていた。 func.phpの修正は不要で、make_link.phpだけ変えればいい。

--- make_link.php.org   Mon Nov 21 16:47:12 2005
+++ make_link.php       Tue Nov 22 12:29:02 2005
@@ -705,3 +705,3 @@
                $title   = $link_compact ? '' : ' title="' . $s_page . $passage . '"';
-               return '<a href="' . $script . '?' . $r_page . $anchor . '"' . $title . '>' .
+               return '<a href="' . $r_page . '.html' . $anchor . '"' . $title . '>' .
                        $s_alias . '</a>';

関連する日記