2010年3月13日

[Apache-Users 7650] Re:.htaccess のrewriteルール

** Apache ユーザーズメーリングリスト **
** 注意:このメールへの返信は Apache-Users へ行きます **

続けてすいません。笹尾です。

On Sat, 13 Mar 2010 12:41:17 +0900
"fujioka" <qhtsige@xxxxx> wrote:

> [Sat Mar 13 12:12:52 2010] [alert] [client 127.0.0.1] D:/upload/.htaccess:
> RewriteRule: cannot compile regular expression

妙な略し方をしてあったので、最初よくわからなかったんですが、
いずれのルールを書いても、
「RewriteRule: cannot compile regular expression」
というエラー(Internal Server Error)になった、という意味ですよね。

他の方からも指摘があるように、[=-%]という記述をすると、
不正な正規表現だ、と、エラーになるようです。

mod_rewriteに限った話ではなく、多くの処理系でそうなると思います。

$ perl -e 's/[=-%]//'
Invalid [] range "=-%" in regex; marked by <-- HERE in m/[=-% <-- HERE ]/ at -e line 1.

=-%じゃなくて、=%-と書けば、エラーにはなりません。

ただし、%20は%20ではなく半角スペースになっているはずなので、
藤岡さんが書いているルールではうまくいかないと思います。

さらに考察すると、=というのも、PHP側でうまく扱えないと思います。
=無しで書くなら、たとえば
RewriteRule "^([0-9A-Za-z\.'_ -]+)\.html$" htmpage2.php?yspec=$1 [L]
でしょうか。

=も使いたいという場合、PHP側でちょっと工夫が必要でしょう。
$_SERVER['QUERY_STRING']を自前で処理するとか、
書き換え先をhtmpage2.php/$1にして、PATH_INFOで受け取るとか。


--
笹尾 卓宏 @ P-strain <sasao@xxxxx>

--
入退会・変更・配送一時停止は以下へ
http://www.apache.jp/mailman/listinfo/apache-users


投稿者 xml-rpc : 2010年3月13日 15:00
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/94105
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。