サマリ | 短縮URLプラグイン ページに短いURLでアクセスできるようにする |
---|---|
リビジョン | 2.0 |
対応バージョン | 1.5.2 |
投稿者 | umorigu |
投稿日 | 2011-03-10 (木) 02:46:04 |
ページにアクセス可能な、短いURLを生成するプラグインです。
「長い名前を持つページ」 www.example.com/pukiwiki/?%E9%95%B7%E3%81%84%E5%90%8D%E5%89%8D%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8
に対して、
www.example.com/pukiwiki/?cmd=s&k=2dc9e012b6
というURLでアクセスできるようにします(k=の後は10文字(設定値))。 実際にはオリジナルのページへ302(301)リダイレクトされます。
mod_rewriteを併用することで
www.example.com/pukiwiki/?&2dc9e012b6
にまで短くなります。
wiki/ や plugin/ と並列の位置に次の2つのディレクトリを作成する。
パーミッションの設定
chmod -R 777 shortener shortener_counter
<?php if ($is_page) { ?> <?php if(SKIN_DEFAULT_DISABLE_TOPICPATH) { ?> <a href="<?php echo $link['reload'] ?>"><span class="small"><?php echo $link['reload'] ?></span></a> <?php } else { ?> <span class="small"> <?php exist_plugin('require_once(PLUGIN_DIR . 'topicpath.inc.php'); echo plugin_topicpath_inline(); ?> </span> <?php } ?> <?php } ?>
ここ↑の置き換え、または下あたりに↓を追加する。
<?php if ($is_page) { ?> <span class="small"> <?php exist_plugin('s'); echo plugin_s_convert_get_short_link(); ?> </span> <?php } ?>
実際はどこか1箇所に書けばよい。
mod_rewrite用の.htaccessの例
RewriteEngine on RewriteBase /var/www/html/pukiwiki RewriteCond %{QUERY_STRING} ^&([0-9a-f]+)$ RewriteRule ^(.*)$ /pukiwiki/?cmd=s&k=%1
これで、
www.example.com/pukiwiki/?&2dc9e012b6
のような /?&xxxxxxxxxx 形式でアクセスできるようになる。
s.inc.php で設定する。
if (is_page($page) && PLUGIN_S_PAGENAME_MININUM_LENGTH < strlen(rawurlencode($page)))の分岐がFalseになった場合は使われないにもかかわらず、必ずmd5ハッシュ処理などをしている。添付ファイルの問題ほど実行回数が多くないのでまだましかもしれませんが(添付ファイルの数だけと1回だけ)
if (defined('PKWK_UTF8_ENABLE')) { $utf8page = $page; } else { $utf8page = mb_convert_encoding(mb_convert_encoding($page, 'SJIS-win', 'EUC-JP'), 'UTF-8', 'SJIS-win'); } $encoded = encode($utf8page);としてしまえばencode関数の実行が必ず1回で済みますし、key-name mapを記録する場合でも$utf8pageを使えば分岐なしにできると思います。ついでに、2回目の文字コード変換も消せるかなと。