#author("2021-11-28T01:22:38+09:00","","") * URLカスタマイズの仕組み [#t65b6b10] - ページ: [[BugTrack]] - 投稿者: [[umorigu]] - 優先順位: 低 - 状態: 提案 - カテゴリー: 本体新機能 - 投稿日: 2021-11-27 (土) 18:12:19 - バージョン: 1.5.3 ** メッセージ [#p2d503a3] PukiWiki の定番のカスタマイズとして、ページURLを変えるものがあります。これを本体書き換え無しで行うための仕組みを導入したい。 URL (path, query 部分) の例 「長い名前を持つページ」 - /?%E9%95%B7%E3%81%84%E5%90%8D%E5%89%8D%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8 (標準) -- 最近のブラウザではアドレス欄でURL decodeされて 「/?長い名前を持つページ」という表示になることが多い - /%E9%95%B7%E3%81%84%E5%90%8D%E5%89%8D%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8 (Path (サーバー上のファイル) として扱う) - /%E9%95%B7%E3%81%84%E5%90%8D%E5%89%8D%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8.html (さらに拡張子を.html にする) - /?&2dc9e012b6 (短縮URLプラグイン [[offitial:自作プラグイン/s.inc.php]] での例示 -- 短縮URLは通常URLにリダイレクトするパターンと、直接表示するパターンの2つ - /2dc9e012b6 (短縮URLをさらにpath風に見せる) - /123.html (pgid プラグイン利用?) *** URLカスタマイズの2パターン [#f92aa1c1] 表示に関わる - (a) PHPのみで実現できるもの -- "?" を使って、PHPファイルとクエリパラメータを分けているもの - (b) Apache/nginxなど、WebサーバーでのURLマッピング操作が必要なもの -- "?" を使わず、PHPファイルのURLと本来クエリパラメータとして渡す部分を両方 path として見せているもの *** 参照 [#q540935c] - [[BugTrack/2213]] get_page_uri($page) 関数 - [[official:自作プラグイン/s.inc.php]] *** 対象 [#d873298b] - ページの表示 (readプラグインのaction) - read以外のactionのURLは対象外 (標準のまま) *** 設計 [#f5b72059] - 各ページのURLを作成しているのは get_page_uri($page) である。get_page_uri() 内の1か所を変更するだけですべてのURLが書き換わる (のが理想) - 各種プラグインも get_page_uri($page) によって各ページのURLを生成すること -- get_page_uri() ができたのが PukiWiki 1.5.2 (2019年3月リリース) なのでこれ以前に作られたプラグインはそもそも対応していない *** カスタマイズ内容 [#hc888a0e] (URL生成) 各ページのURL は get_base_uri() + 「ページを表すURL片」で表現される。 (例: "?FrontPage", "?BugTrack/2525") ページ名を引数にしてこの「ページを表すURL片」の生成する関数を登録できるようにする。 (ページの表示) 「ページを表すURL片」を受け取って、表示(または別のプラグインアクション)を行う関数を登録できるようにする。 -------- #comment