質問箱/4561

カテゴリ
サマリタイトルにスペースを含む場合、Yahoo検索から存在しないページにユーザーが来訪する件
バージョン1.4.7
投稿者TOBY?
状態質問
投稿日2010-02-28 (日) 07:45:29

質問

質問させて頂きます。

以前より"Hoge Mage"というタイトルのページがすでにあるのに "Hoge+Mage"というページを新規で作成を乱発されるという、 スパム書き込みのような、そうでもないような書き込みが相次ぎ困っており、 何とかこちらで出来る対処はないものか?と思い書き込んだ次第です。

spam_filter.phpによりCAPTCHAの導入をしていることもあり、 またアクセス解析を見るに手動で書き込んでいるようです。

アクセス解析など原因を調査したところ、Yahoo検索からの来訪者のようで、 Yahoo検索からは、Pukiwiki上のタイトルにスペースを含むページに飛ぶと、 スペースの変わりに"+"に置き換えたURLに飛ぶようでした。 具体的には、元のURLに%20を含むと%2Bに置換したURLに飛んでくるようです。

例:"Hoge Mage"というもとのページではなく、Yahoo検索では"Hoge+Mage"というページに飛ぶ (Googleではこのようなことはありません)

こちらのwiki以外でも同様のことが起こっているはずです。

対処法としては、

  • "Hoge+Mage"ページを作って"Hoge Mage"へ誘導する
  • "Hoge+Mage"ページを作って#includeで"Hoge Mage"を読み込む
  • %2Bを含むアクセス(Hoge+Mage)を%20(Hoge Mage)へ飛ばす

などがあると思いますが、

前者2つはページがかなり多すぎるため、難しいと感じています。 最後の方法を取るものとして、どのような指針を立てたものでしょうか?

念のため、Yahoo検索には報告済みです。

環境は Pukiwiki 1.4.7 EUC版です。

回答

  • dev:BugTrack2/294 のコメントにあるindex.php?cmd=read&page=t+e%20s%20t とindex.php?t+e%20s%20t の処理の違いが原因かな?前者はPHP の開始時に(前処理をしてから)$_GET['page'] にページ名が格納されますが、後者はlib/init.php でエミュレートしているようなものですから。
    plus:質問箱/250のような方法か、
     // cmdもpluginも指定されていない場合は、QUERY_STRINGをページ名かInterWikiNameであるとみなす
     if (! isset($vars['cmd']) && ! isset($vars['plugin'])) {
     
     	$get['cmd']  = $post['cmd']  = $vars['cmd']  = 'read';
     
     	if ($arg == '') $arg = $defaultpage;
    -	$arg = rawurldecode($arg);
    +	$arg = urldecode($arg);
     	$arg = strip_bracket($arg);
     	$arg = input_filter($arg);
     	$get['page'] = $post['page'] = $vars['page'] = $arg;
     }
    とするか、が回避法ですかね。 -- 2010-02-28 (日) 19:03:34
  • ありがとうございます。うーんなるほど、 plus:質問箱/250 (なんと2007年の話題…)の話題そのものの内容ですね。回避法のパッチ試してみます。 -- TOBY? 2010-03-02 (火) 11:06:28
  • あ、あれ、本当ですね。index.php?cmd=read&page=Hoge+Mageではちゃんと"Hoge Mage"のページに飛びますね。 -- TOBY? 2010-03-02 (火) 11:15:21


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-03-02 (火) 15:45:24
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u5. HTML convert time: 0.241 sec.

OSDN