Naba Blog

Programming, Compose, Travel

正規表現である文字が含まれているかどうか表現

ApacheのSetEnvIf Request_URIの設定で、

拡張子は分かったけどある文字(?, =, %, $)が含まれている場合に

nologにしようと思ったけど少しだけ行き詰まったのでメモ。

初めに、

SetEnvIf Request_URI "\?|=|%|\$" nolog

とか書いたけどうまく行かなかった。

よく考えてみれば当たり前だけど、

これじゃリクエストURIが?のみとか=のみしかマッチングしないよね。

そんなのありえないっての。

んで、ググったらいい感じのが出てきた

それを参考に、

SetEnvIf Request_URI "^.*(\?|=|%|\$).*" nolog

に変更。

^は先頭にマッチング。それに、.*

先頭に何かしらの文字がいくらか続く、って表現できる。

んで、何かしらの対象文字を挟んだあとに、

最後にまた何かしらの文字が続くようにする様に.*

よく考えれば当たり前のことだけど、1時間ほど迷ってしまった。

2014/05/05 追記

やっぱり上手くマッチングできてなかったけど、原因が分かったので続編。

http://naba.hatenablog.jp/entry/archives/366naba.hatenablog.jp