PukiWikiのURLとカスタマイズの情報をまとめるページです。
1.5.2以降、プラグインから各種URLを取得する場合は以下の指定を使ってください。 PukiWiki 1.5.4 以降ではURLカスタマイズが反映されたURLを取得できます。
項目 | 1.5.2以降の指定 | 1.5.1以前の指定 (deprecated) | 補足 |
トップページへのリンク | get_base_uri() | get_script_url(), global $script | 絶対URLが必要でない場合は引数無し |
トップページへのリンク (絶対URL) | get_base_uri(PKWK_URI_ABSOLUTE) | get_script_url(), global $script | |
ページのリンク | get_page_uri($page) | get_script_url() + '?' + pagename_urlencode($page) get_script_url() + '?' + rawurlencode($page) | $pageが$defaultpageの場合、get_base_uri()と同じ値が返る 絶対URLが必要でない場合は引数無し |
ページのリンク (絶対URL) | get_page_uri($page, PKWK_URI_ABSOLUTE) | get_script_url() + '?' + pagename_urlencode($page) get_script_url() + '?' + rawurlencode($page) | $pageが$defaultpageの場合、get_base_uri()と同じ値が返る |
プラグイン呼び出し | get_base_uri() + '?cmd=<plugin_name>&...' get_base_uri() + '?plugin=<plugin_name>&...' | get_script_url() + '?cmd=<plugin_name>&...' get_script_url() + '?plugin=<plugin_name>&...' | 絶対URLが必要でない場合は引数無し |
プラグイン呼び出し (絶対URL) | get_base_uri(PKWK_URI_ABSOLUTE) + '?cmd=<plugin_name>&...' get_base_uri(PKWK_URI_ABSOLUTE) + '?plugin=<plugin_name>&...' | get_script_url() + '?cmd=<plugin_name>&...' get_script_url() + '?plugin=<plugin_name>&...' |
追加引数に PKWK_URI_ABSOLUTE を指定すると絶対URLが得られる。ただし、引数を指定しない場合に必ず相対URLが得られるわけではなく、 pkwk_base_uri_type_stack_push() の仕組みにより、絶対URLが必要なサイトや場面ではルート相対URLや絶対URLが返ることもある。
グローバル変数 $script によって 設置するWikiサイトのトップページのURLを設定します。( 例: 'http://wiki.example.com/pukiwiki/' )
例:
シンプルな構成の場合、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/ に固定したい場合など。
注意:
global $script は pukiwiki.ini.php での設定のみに利用し、プラグインやロジックから直接グローバル変数 $script を参照することは避けること。 トップページへのリンクを取得したい場合は get_base_uri(), 絶対パスを取得したい場合は get_base_uri(PKWK_URI_ABSOLUTE) を使います。
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 から生成されます。
PukiWiki本体コードやプラグインから、各ページのURLを生成します。
取得した値はそのままページ表示用のURLとして利用し、クエリパラメータ ( ?key=value や &key=value ) を追加しない。URLフラグメント ( #key=value の利用は問題ない )
用途に応じて、PKWK_URI_RELATIVE, PKWK_URI_ROOT, PKWK_URI_ABSOLUTE のオプションを設定します。
この値は グローバル変数$script から生成されます。
PukiWiki内のページおよびトップページを指し示すのに3種類のパス指定方法があります。
正しく設定されている限り互換性があり、相対パスが使えるところではROOT相対パスや絶対パスを指定しても問題なく動作する。
相対パスよりも絶対パスでの指定の方が確実ではあるが、基準となるURL (PukiWikiでは $script) を正しく指定していないと動作しないというデメリットがある。 反対に、相対パスベースであれば仮に基準URLを正しく設定していない場合 (基準URLの自動推測に失敗した場合も含む) でも動作する。
PukiWiki は 1.5.2 から、相対パスを積極的に利用する方針に変更している。 BugTrack/2213。 1.5.1 以前はほとんどのケースで絶対パスを使っていた。
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() と 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'
$script = 'http:// wiki.example.com/pukiwiki/';
関数 | 結果 | (pkwk_base_uri_type_stack_push(PKWK_URI_ROOT); の後) | (pkwk_base_uri_type_stack_push(PKWK_URI_ABSOLUTE); の後) |
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 が推測によって自動設定された場合も同様)