Top/PukiWiki/改造/URL Encodeの代わりにPunycode Encodeを使う

URL Encodeの代わりにPunycode Encodeを使うはてなブックマーク

PukiWikiのURLについての問題

  • URLが長い。*1
  • 勝手にURL Decodeするクライアントがいる。

解決するには

rawurlencodeの代わりに他のエンコード法、例えばPunycode Encodeを使う。*2 Punycodeを使うのはASCII文字列が残るから。また何より、RFCの例が素晴らしいから :)

なお、正確には併用となります。Punycodeもどき。

インストール

Libidn

GNU IDN Library - Libidn - GNU Project - Free Software Foundation (FSF)

wget http://josefsson.org/libidn/releases/libidn-0.5.9.tar.gz
tar xvzf libidn-0.5.9.tar.gz
cd libidn-0.5.9/
./configure
make
make install

もしくは

apt-get install libidn11-dev

PHP-IDN

PHP-IDN (v1.1/Stable) @ Bayour.COM

wget http://php-idn.bayour.com/idn_1.1.tar.bz2
tar xvjf idn_1.1.tar.bz2
cd idn-1.1/
phpize
./configure
make
make install
ln -s /usr/local/lib/php/extensions/no-debug-non-zts-20020429/idn.so /usr/local/lib/php/extensions/idn.so
vi /usr/local/lib/php.ini
[php-idn]
extension="/usr/local/lib/php/extensions/idn.so"
;idn.allow_unassigned_chars = "0"
;idn.use_std_3_ascii_rules = "0"
idn.default_charset = "EUC-JP"

phpinfo()で確認。

パッチ (PukiWiki1.4.4)

静的コンテンツに偽装

PukiWiki/改造/静的コンテンツに偽装/ページを参考にお好みで。

パッチ

ディレクトリに偽装した場合の例

このサイトでの例。*3

備考

  • パッチを当てた後でもURL Encodeされた文字列は解釈できます。InterWikiはこちらで。
  • 計算量の割にはメリットが少ないかも。

関連

参考

関連

コメント等ありましたらどうぞ :)

name:

Amazon


日本語.com/netはバリュードメインなら990円。

*1 階層化し過ぎなので、身から出たさび :p
*2 ただ、本来は国際化ドメイン名(IDN)のための技術なので、端から無理があります。
*3 今のところpuny_repurlenc.diffの大半を当てていないため、[[]]で作られるリンクのリンク先などは元のまま。
差分 一覧