トップ     差分 バックアップ   リロード     一覧 単語検索 最終更新
  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • server/PukiWiki/静的URLに改造する へ行く。
  • server/PukiWiki/静的URLに改造する の差分を削除

[[Pukiwiki]]

*静的URLに改造する [#vfe80387]

&color(red){工事中};

PukiwikiのURLを静的なURLでアクセスできるように改造しました.
一般に,SEOとして行われているものです.
実際のところどうなのか分かりませんが,Googleは ? や & が含まれているページをインデックス化しないという情報がありますので,改造してみました.
&size(9){単にURLが気にくわなかっただけというのも理由ですが...};

実際には,Pukiwikiだけの改造で対処するのではありません.Apacheのモジュールのmod_rewriteを使って,CGI風のURLを*.htmlの形に書き換えて,Pukiwikiに渡すようにしました.

&aname(test);

以下のページを参考にしています.

-[[PukiWiki静的URL改造 - 南天dub:http://tfs.s41.xrea.com/pukiwiki.php?PukiWiki%C0%C5%C5%AAURL%B2%FE%C2%A4]]
-[[PukiWiki/改造/静的コンテンツに偽装/ページ - cubic9.com:http://cubic9.com/PukiWiki/%B2%FE%C2%A4/%C0%C5%C5%AA%A5%B3%A5%F3%A5%C6%A5%F3%A5%C4%A4%CB%B5%B6%C1%F5/%A5%DA%A1%BC%A5%B8/]]

* Apacheの設定 [#lbeb36f8]

mod_rewriteを設定します.

.htaccess や,Apacheの設定ファイル(http.conf, Gento Linuxの場合はapache.conf) の<Directory>ディレクティブに以下の内容を記述します.
 Options FollowSymLinks
 
 RewriteEngine on
 RewriteOptions MaxRedirects=1
 RewriteBase /pukiwiki/
 
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.+)\.html$ index.php?$1 [L]

Apache が,2.0系でないと,ページを階層化している場合に問題が起きます.
%2F(/)が含まれていると,mod_rewrite が全くききません.
設定で,

 AllowEncodedSlashes On 

としないとなりませんが,このディレクティブは,2.0以降にしか存在しません.

* Pukiwikiの改造 [#me6fc259]

使ったのは,Pukiwiki 1.4.5 です.

これだけでは,Pukiwikiが生成するリンクは,CGI風のままですので,リンクを生成している部分を改造します.

** lib/make_link.php [#tbd39415]

lib/make_link.php の 576行目あたりに,Link_bracketname クラスの toString がありますので,その内容を次のように書き換えます.

改造前

 function toString()
 {
        return = make_pagelink(
                $this->name,
                $this->alias,
                $this->anchor,
                $this->page
        );
 }


改造後

 function toString()
 {
        $link_result = make_pagelink(
                $this->name,
                $this->alias,
                $this->anchor,
                $this->page
        );
        $link_result = preg_replace("/index\.php\?(.*)\" title=/",
                "$1.html\" title=", $link_result);
        return $link_result;
 }

** lib/html.php [#x043fea9]

54行あたりで,トップページのURLを生成する部分があります.メニューでトップページへのリンクを生成していますので,ここも書き換えます

改造前
 $_LINK['top']      = "$script?" . rawurlencode($defaultpage);

改造後
 $_LINK['top']      = rawurlencode($defaultpage) . ".html";

** plugin/ls2.inc.php [#p94ffefb]

ls2 プラグインは,また別の仕組みでURLを作っていますので,そこも改造します.

改造前 126行目
 $href   = $script . '?cmd=read&amp;page=' . $r_page;

改造後
 $href   = $r_page."html";

** plugin/recent.inc.php [#ia00be7c]

recent プラグインも同じようにします

改造前 55行目付近

 if($page == $vars['page']) {
         // No need to link itself, notifies where you just read
         $items .= " <li><span title=\"$s_page $pg_passage\">$s_page</span></li>\n";
 } else {
         $items .= " <li><a href=\"$script?$r_page\" title=\"$s_page $pg_passage\">$s_page</a></li>\n";
 }

改造後

 if($page == $vars['page']) {
         // No need to link itself, notifies where you just read
         $items .= " <li><span title=\"$s_page $pg_passage\">$s_page</span></li>\n";
 } else {
         $items .= " <li><a href=\"$r_page.html\" title=\"$s_page $pg_passage\">$s_page</a></li>\n";
 }


私が必要だったのは当面これだけでしたので,他にどれだけURLを生成している箇所があるのかは探していません.
ただ,改造していなくてもURLが元のままになるだけで,動作には問題ないと思います.

* 注意 [#td2b4062]

最後にお約束の注意です.この改造の結果に,私は責任をもてませんので,自己責任でお願いします.
トップ   編集 差分 バックアップ リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Site admin: shingo

PukiWiki 1.5.4 © 2001-2022 PukiWiki Development Team. Powered by PHP 8.1.20. HTML convert time: 0.003 sec.