Tag: PukiWiki URLカスタマイズ機構
PukiWiki 1.5.4の新機能であるURLカスタマイズ機構を導入してみる。
こちらを参考にして導入する。
https://pukiwiki.sourceforge.io/dev/?BugTrack/2525 [サムネイル添付]

BugTrack/2525 Top/BugTrack/2525 [ トップ ] [ 編集 | 凍結 |
私は/?xxxxxxxxxxという形にしたかったので、上記ページの「(9)の短縮URLプラグイン (s.inc.php) による常時短縮URL パターン2」と「(8) 短縮URLプラグイン (s.inc.php) 短縮URL優先利用カスタマイズ」の両方を使う。
このURLカスタマイズ機構は他にもまるで静的サイトのように見せることができる、「(3) path風に変更する」というものもある。
1.5.4からURLカスタマイズ機構はPukiWiki標準機能となっているのだが、s.inc.phpという短縮プラグインを導入しなければならない。
https://pukiwiki.sourceforge.io/?自作プラグイン/s.inc.php [サムネイル添付]

URL短縮プラグインのGitHubページからsrc/を開いてs.inc.phpをダウンロードした。
ちなみに私はskin/pukiwiki.skin.php の変更はしていないので「skin/pukiwiki.skin.php を編集」は飛ばした。
shortener/とshortener_counter/、2つのフォルダを作成してパーミッションを777にする。
設定値は以下のようにした。
define('PLUGIN_S_VIRTUAL_QUERY_PREFIX', '?');
define('PLUGIN_S_PAGENAME_MININUM_LENGTH', 1);
PLUGIN_S_PAGENAME_MININUM_LENGTHを変更した理由はすべてのページを同じようなURLにしたかったからだ。
pukiwiki.ini.phpの以下の行をBugTrack/2525の(9)に従って置き換えた。
///////////////////////////////////////////////// // Page-URI mapping handler ( See https://pukiwiki.sourceforge.io/?PukiWiki/PageURI )
だが、これだと(8)の優先利用カスタマイズは使えないので以下のように変更した。
(9) のカスタマイズにリダイレクトさせる機能も付け加えた。
/////////////////////////////////////////////////
// Page-URI mapping handler ( See https://pukiwiki.sourceforge.io/?PukiWiki/PageURI )
class ShortUrl2PageURIHandler extends PukiWikiStandardPageURIHandler {
function get_page_uri_virtual_query($page) {
exist_plugin('s'); // Load s.inc.php
$page_id = plugin_s_get_page_id($page);
if ($page_id) {
return '?' . $page_id;
}
return '?' . pagename_urlencode($page);
}
function get_page_from_query_string($query_string) {
exist_plugin('s'); // Load s.inc.php
$m = array();
if (preg_match('#^([0-9a-z]{10})$#', $query_string, $m)) {
$page = plugin_s_get_page_from_page_id($m[1]);
if ($page) {
return $page;
} else {
// Not found
http_response_code(404);
die_message('Not found');
exit;
}
}
$is_get = $_SERVER['REQUEST_METHOD'] === 'GET';
if ($is_get) {
if (!preg_match('#^([0-9a-z]{10})$#', $query_string, $m)
) {
$dec_page = urldecode($query_string);
$page_id = plugin_s_get_page_id($dec_page);
if ($page_id) {
$short_url = get_page_uri($dec_page, PKWK_URI_ROOT);
header("HTTP/1.1 302 Found");
header("Location: $short_url");
exit;
}
}
}
return parent::get_page_from_query_string($query_string);
}
}
$page_uri_handler = new ShortUrl2PageURIHandler();
これで「/?xxxxxxxxxx」の短縮の形のURLとなり、エンコードされたページで開かれたURLは短縮の形へリダイレクトするようになった。
コメントはありません。 Comments/blog/2023-10-03
目次 |
[もっと見る]
[もっと見る]