Top/PukiWiki/改造/静的コンテンツに偽装/ページ2

ページ2はてなブックマーク

いまいち :p

URLをエンコードされたものだと認識されない形に偽装

問題

  1. PukiWiki/改造/静的コンテンツに偽装/ページ を行っても、
    URLに%が含まれているので動的ページだとバレてるかもしれない。
  2. URLがGETで渡される場合(翻訳サービスなど)、URL中のページ名が内部でデコードされる際に
    巻き添えを食らって化けたり、消失したりすることがある。*1

解決するには

そこで、URLをエンコードされたものだと認識されない形にしてしまえば、
問題を解決できるのではと考えた。
具体的にはURL中の%を任意の文字(列)で置換したURLで
ページにアクセスできるようにする。
SEO上の効果は不明。*2

動作

適用前cubic9.com/PukiWiki/%B2%FE%C2%A4/SEO%C2%D0%BA%F6/
適用後cubic9.com/PukiWiki/~B2~FE~C2~A4/SEO~C2~D0~BA~F6/

(cubic9.comはディレクトリに偽装のみ適用中ですので、リダイレクトされます。)
ただし、チルダ "~" をURLに含めるのは本当はあまりよくない :p *3

作業

  • init.php
    221行目付近
    -$arg = input_filter($arg); // \0 除去
    +$arg = str_replace('~', '%', input_filter($arg)); // \0 除去
    
  • lib/func.php
    644行目付近
    PukiWiki/改造/静的コンテンツに偽装/ページ#dir
    追加した関数anchor_replaceを書き換えます。
    -// PukiWikiの階層をディレクトリに偽装
    +// PukiWikiの階層をディレクトリに偽装 & "%" -> "~"
    function anchor_replace($anchor)
    {
    -	return str_replace('%2F', '/', $anchor);
    +	return str_replace('%', '~', str_replace('%2F', '/', $anchor));
    }

テスト

サービス適用前適用後備考
POP辞書×
Amikai系(excite翻訳)
WorldLingo翻訳
キッズgooふりがな
AltaVista翻訳××EUC-JPが通らない?

あれ?POP辞書しか変わってない :(

Amazon

*1 URLは http%3A%2F%2Fcubic9.com などとエンコードされてQUERY_STRINGに入るが、このときにPukiWikiでエンコードした文字列が紛れてしまう。
*2 10/14現在は逆効果な気がしてきました :(
*3 普通は "-" や "_" に置換し、ページ名にこれらの記号を使わないというポリシーで運営するのがいいのでは。
差分 一覧