<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/xml.xsl" type="text/xsl"?><feed xmlns="http://www.w3.org/2005/Atom">
  <title>nulog, NULL::something : out of the headphone &gt; 2005 &gt; September &gt; 13 &gt; pukiwiki の URI をクールに</title>
  <link href="http://lowreal.net/logs/2005/09/13/2"/>
  <icon>http://lowreal.net/img/banner.png</icon>
  <link rel="self" type="application/atom+xml" href="http://lowreal.net/logs/2005/09/13/2.atom"/>
  <link rel="alternate" type="application/xhtml+xml" href="http://lowreal.net/logs/2005/09/13/2.xhtml"/>
  <updated>2005-09-13T11:28:52+09:00</updated>
  <author>
    <name>cho45(砂糖)</name>
  </author>
  <id>http://lowreal.net/2005/09/13/2</id>
  <entry>
    <title>pukiwiki の URI をクールに</title>
    <link rel="alternate" type="text/html" href="http://lowreal.net/logs/2005/09/13/2.html"/>
    <link rel="alternate" type="application/xml+xhtml" href="http://lowreal.net/logs/2005/09/13/2.xhtml"/>
    <updated>2005-09-13T11:28:52+09:00</updated>
    <published>2005-09-13T11:28:52+09:00</published>
    <id>http://lowreal.net/2005/09/13/2</id>
    <category term="net"/>
    <content type="xhtml" xml:base="http://lowreal.net/">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>これもともとやるつもりじゃなかったんだけど、<a href="http://hail2u.net/blog/blosxom/permalink-of-all-about-blosxom.html">all about blosxomのpermalink</a> をボケーっと見てたら、あー ? 付きってなんてダサいんだ！とか思い始めてやっちゃった次第……</p>
        <p>っていっても力技な改造なのでお勧めできない。むしろ力技な方法しかない。つまり、mod_rewrite のやつ書いたら、あとはガッツ手作業 (謎) で ? + ページ名 なリンクを生成しているところを置き換えていく。</p>
        <p>とはいえいくつかハマったのでそのへん一応書いておこう。いやしかしなんで俺は最初から書こうと思わなかったんだ。</p>
        <p>まず mod_rewrite の設定を .htaccess に書く。ドメインのトップに設置しているので、その辺きめうちです。これはスクリプト書き換えるときもそうですけど。ていうかあー、これ pukiwiki 1.4.3 の話なので、最近のは普通にできるのかもしれません。最近のやつはスキンファイルが理解しがたいのでいぢる気が起きませんけど。</p>
        <pre>RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?$1 [L,QSA]
</pre>
        <p>func.php でページリストを書き出す関数 page_list があるのだけど、<code class="PHP">"$script?cmd=$cmd&amp;page=$r_page"</code> とかなってて一見書き換えポイントに見えないので注意。ちなみにそのまま書き換えるともちろんよくないので以下のように</p>
        <pre class="PHP">        if ($cmd == "read") {
            $str = "   &lt;li&gt;&lt;a href=\"/$r_page\"&gt;$s_page&lt;/a&gt;$passage";
        } else {
            $str = "   &lt;li&gt;&lt;a href=\"$script?cmd=$cmd&amp;amp;page=$r_page\"&gt;$s_page&lt;/a&gt;$passage";
        }
</pre>
        <p>んでもって、このままだと / を含んだページ名のページを見れなくなる (詳細不明) なので、<code class="PHP">rawurlencode($page)</code> とかを、<code class="PHP">str_replace("%2F", "/", rawurlencode($page))</code> にすべて置き換えます。めんどいので gresreg やった。<code class="PHP">$page</code> が <code class="PHP">$post['page']</code> になってるところがあるのでソレも忘れずに。</p>
        <p>で、終わりなんだけど、これをやる人にとって、この情報は大して役に立たない気がするよ。普通にやると普通に気付くことしか書いてないから！</p>
      </div>
    </content>
  </entry>
</feed>
