mod_rewriteの否定パターン

Apacheのmod_rewirteで、あるパスを除くといった条件をどう書けばいいのだろうと疑問に思っていたがRewriteRuleでも ! で否定パターンを使えることを今日知って、これとChainフラグを使えばRewriteRuleだけで実現できることが分かった。

RewriteRule !^/notrewrite/(.*) - [C]
RewriteRule ^/(.*) /rewrited/$1

これで例えば、http://example.com/notrewrite/index.html はリライトされず、その他のパスへのアクセスは http://example.com/anydir/index.htmlhttp://example.com/rewrited/anydir/index.html といった具合でリライトされる。

! を使ったパターンの場合は、グループ化による後方参照は使えないことに注意。

Last updated on July 8, 2015