#author("2022-04-24T12:22:43+09:00","","") PukiWikiのURLとカスタマイズの情報をまとめるページです。 #contents * トップページのURL $script [#script] グローバル変数 $script によって 設置するWikiサイトのトップページのURLを設定します。( 例: 'http://wiki.example.com/pukiwiki/' ) 例: - https://wiki.example.com/pukiwiki/ - http://example.jp/ - http://localhost:8080/wiki/index.php シンプルな構成の場合、PukiWikiはPHPやApacheなどWebサーバーの設置情報から $script を推測します。 $script の推測に失敗する場合や、URLを固定したい場合、pukiwiki.ini.php で $script を明示するようにしてください。 pukiwiki.ini.php: $script = 'https:// wiki.example.com/pukiwiki/'; URLの固定: 例えば https://wiki.example.com/pukiwiki/index.php でもアクセスできるが、URLは https://wiki.example.com/pukiwiki/ に固定したい場合など。 * get_base_uri() [#get_base_uri] PukiWiki本体コードやプラグインから、PukiWiki本体のURLを取得します。 プラグインの呼び出しのURLはこの get_base_uri() に '?' から始まるクエリ文字列を付与することで生成できます。 用途に応じて、PKWK_URI_RELATIVE, PKWK_URI_ROOT, PKWK_URI_ABSOLUTE のオプションを設定します。 例: $edit_action_url = get_base_uri() . '?cmd=edit&page=EditTargetPage'; この値は グローバル変数$script から生成されます。 * get_page_uri($page) [#get_page_uri] PukiWiki本体コードやプラグインから、各ページのURLを生成します。 取得した値はそのままページ表示用のURLとして利用し、クエリパラメータ ( ?key=value や &key=value ) を追加しない。URLフラグメント ( #key=value の利用は問題ない ) 用途に応じて、PKWK_URI_RELATIVE, PKWK_URI_ROOT, PKWK_URI_ABSOLUTE のオプションを設定します。 この値は グローバル変数$script から生成されます。 * 絶対パスと相対パス [#o0b6c755] PukiWiki内のページおよびトップページを指し示すのに3種類のパス指定方法があります。 - 絶対パス (PKWK_URI_ABSOLUTE) -- 現在表示しているページとは関係なく、全世界で特定のリソースを特定する -- 利用箇所: URLのユーザーへの提示、サーバー外からのリダイレクト先 -- ( 例: https://pukiwiki.osdn.jp/dev/?PageURI ) - ルート相対パス (PKWK_URI_ROOT) -- 現在表示しているページのサーバーのトップページ '/' からの相対位置でリソースを表す -- 利用箇所: サーバーリダイレクト (300, 301, 302 リダイレクトでの Location ヘッダの値) -- URLカスタマイズでPath風のURLを採用した場合のリソース特定 -- ( 例: /dev/?PageURI ) - 相対パス (PKWK_URI_RELATIVE) -- 現在表示しているページからの相対位置でリソースを表す -- 利用箇所: PukiWiki内のリソース(ページ)参照 -- ( 例: ./?PageURI ) 正しく設定されている限り互換性があり、相対パスが使えるところではROOT相対パスや絶対パスを指定しても問題なく動作する。 相対パスよりも絶対パスでの指定の方が確実ではあるが、基準となるURL (PukiWikiでは $script) を正しく指定していないと動作しないというデメリットがある。 反対に、相対パスベースであれば仮に基準URLを正しく設定していない場合 (基準URLの自動推測に失敗した場合も含む) でも動作する。 PukiWiki は 1.5.2 から、相対パスを積極的に利用する方針に変更している。 [[BugTrack/2213]]。 1.5.1 以前はほとんどのケースで絶対パスを使っていた。 * pkwk_base_uri_type_stack_push() [#pkwk_base_uri_type_stack_push] pkwk_base_uri_type_stack_push(opt); を呼び出してから pkwk_base_uri_type_stack_pop() を呼び出すまでの間、 get_base_uri() で get_page_uri() での返却地が opt によって影響を受けます。 - pkwk_base_uri_type_stack_push(PKWK_URI_ROOT) の場合、この間の PKWK_URI_RELATIVE は無視され、 PKWK_URI_ROOT を指定したものとして扱われます。 - pkwk_base_uri_type_stack_push(PKWK_URI_ABSOLUTE) の場合、常に PKWK_URI_ABSOLUTE を指定したものとして扱われます。 pkwk_base_uri_type_stack_push() と get_page_uri() の結果を以下のサンプルで表します。 $script = 'http:// wiki.example.com/pukiwiki/'; $link1 = get_page_uri('Abc/Sample); // => './?Abc/Sample' pkwk_base_uri_type_stack_push(PKWK_URI_ROOT); $link2 = get_page_uri('Abc/Sample); // => '/pukiwiki/?Abc/Sample' pkwk_base_uri_type_stack_pop() $link3 = get_page_uri('Abc/Sample); // => ./?Abc/Sample' pkwk_base_uri_type_stack_push(PKWK_URI_ABSOLUTE); $link4 = get_page_uri('Abc/Sample); // => 'http:// wiki.example.com/pukiwiki/?Abc/Sample' pkwk_base_uri_type_stack_pop(); $link5 = get_page_uri('Abc/Sample); // => './?Abc/Sample' * 実際の値 [#value_samples] $script = 'http:// wiki.example.com/pukiwiki/'; | 関数 | 結果 | (pkwk_base_uri_type_stack_push(PKWK_URI_ROOT); の後) | (pkwk_base_uri_type_stack_push(PKWK_URI_ABSOLUTE); の後) |h | get_base_uri() | './' | '/pukiwiki/' | 'http://wiki.example.com/pukiwiki/' | | get_base_uri(PKWK_URI_RELATIVE) | './' | '/pukiwiki/' | 'http://wiki.example.com/pukiwiki/' | | get_base_uri(PKWK_URI_ROOT) | '/pukiwiki/' | '/pukiwiki/' | 'http://wiki.example.com/pukiwiki/' | | get_base_uri(PKWK_URI_ABSOLUTE) | 'http://wiki.example.com/pukiwiki/' | 'http://wiki.example.com/pukiwiki/' | 'http://wiki.example.com/pukiwiki/' | | get_page_uri('Abc/Sample') | ./?Abc/Sample' | '/pukiwiki/?Abc/Sample' | 'http://wiki.example.com/pukiwiki/?Abc/Sample' | | get_page_uri('Abc/Sample', PKWK_URI_RELATIVE) | ./?Abc/Sample' | '/pukiwiki/?Abc/Sample' | 'http://wiki.example.com/pukiwiki/?Abc/Sample' | | get_page_uri('Abc/Sample', PKWK_URI_ROOT) | '/pukiwiki/?Abc/Sample' | '/pukiwiki/?Abc/Sample' | 'http://wiki.example.com/pukiwiki/?Abc/Sample' | | get_page_uri('Abc/Sample', PKWK_URI_ABSOLUTE) | 'http://wiki.example.com/pukiwiki/?Abc/Sample' | 'http://wiki.example.com/pukiwiki/?Abc/Sample' | 'http://wiki.example.com/pukiwiki/?Abc/Sample' | get_base_uri(PKWK_URI_ABSOLUTE) の値は常に $script と一致します。 ($script を明示した場合も、 $script が推測によって自動設定された場合も同様) * 参照 [#b175f330] - [[BugTrack/2213]] get_page_uri($page) 関数, 相対URL/絶対URL - [[BugTrack/2525]] URLカスタマイズの仕組み - [[official:自作プラグイン/s.inc.php]] * コメント [#comments] ---- #comment