Apacheで期待しないURLをはじく

私が管理しているウェブはPloneがバックエンドにあるんですが、本来期待しているURL、たとえば

http://www.hogehoge.com/hoge/foo/fuga.html

からURLを遡って

http://www.hogehoge.com/hoge/

なんてリクエストを受けとると、なんだか妙な画面が表示されることがあります。Plone(Zope)の獲得でNot Foundにできないんですね。よって、フロントエンドのApacheでなんとかすることに。

mod_rewriteを使って、期待していないURLの場合NotFoundページを出すことにしました。

RewriteCond     %{REQUEST_URI}  "^/hoge/(foo|baa)/"
RewriteCond     %{REQUEST_URI}  "!/hoge/(foo|baa)/.*\.(html|htm|xhtml)$"
RewriteRule     ^(.*)$    http://www.hogehoge.com/404.html [P]

Apache正規表現を理解してくれてうれしい。