ページ2
いまいち
URLをエンコードされたものだと認識されない形に偽装
問題
- PukiWiki/改造/静的コンテンツに偽装/ページ を行っても、
URLに%が含まれているので動的ページだとバレてるかもしれない。 - 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に含めるのは本当はあまりよくない *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辞書しか変わってない