[Apache-Users 7651] Re: .htaccess のrewriteルール
fujioka
qhtsige @ apost.plala.or.jp
2010年 3月 13日 (土) 19:52:04 JST
沢山のご返事ありがとうございます。
最初に変換したいURLは間違っていたことをお詫びします。(やりたいことのご指摘とおりです)
要求されたURL1 http://localhost/Rosa_/'Matilda/'.html
変換したいURL1 http://localhost/htmpage2.php?yspec=Rosa_/'Matilda/'.html
/記号は削除されても、そのままでも良い。
要求されたURL2 http://localhost/Anemone%20debilis.html
変換したいURL2 http://localhost/htmpage2.php?yspec=Anemone%20debilis
ここで%20はPHPで受けたとき空白に置き換わっていてもよい。
これらのURLはログファイルにあったものです。
上記のような想定していないURLを受けた場合は、PHP側で解釈するようにしているのですが、そもそも上記の場合は、htmpage2に渡らず(つまりrewriteruleでマッチしない)、404エラーになる問題を考えていました。そのような状況で投稿時に、phpでの変換と混同してしまいました。混乱して申し訳ありませんでした。
再度、問題を整理しますと、上記のURLの場合にも、htmppage2に渡されるようにしたいことがやりたいことです。
PHPに渡りさえすれば、何とか解釈するようにできると思っています。
もう少し背景を補足しますと、大部分のリクエストは問題ないのですが、ごく一部に上記のような変な変換をしてクロールするクローラがあるのです。ですので、これらは放置しても(現状)問題は無いのですが、救える物は救ってやろうという意図です。
頂いたアドバイスの内、次を試しました。いずれもregular expression エラーとなります。
^([0-9A-Za-z_\.'=%-]+)\.html$ -の位置を最後にする(%が無ければOK)
^([0-9A-Za-z_\.'=%" "-]+)\.html$ 空白を””で囲む(%が無ければOK)
なお=.とも必要です。
再度よろしくお願いします。
Apache-Users メーリングリストの案内