FrontPage>blog>2023-10-03

PukiWikiの新機能「URLカスタマイズ機構」を導入

Tag: PukiWiki URLカスタマイズ機構

PukiWiki 1.5.4の新機能であるURLカスタマイズ機構を導入してみる。

こちらを参考にして導入する。

私は/?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という短縮プラグインを導入しなければならない。

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



URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

検索

 

目次

最新のページ

2023-11-22 2023-10-26 2023-10-08

[もっと見る]

タグ

[もっと見る]

人気のページ

カウンター

合計: 201
今日: 1
昨日: 0
オンライン: 11
  編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-04-06 (土) 15:54:36
This site is protected by Turnstile and the Cloudflare Privacy Policy and Terms of Service apply.