如何匹配RewriteCond中的子目录?

edg*_*ars 6 regex mod-rewrite

正确使用RewriteCond的正则表达式有问题

RewriteCond %{REQUEST_URI} !^/foo/
Run Code Online (Sandbox Code Playgroud)

按预期工作,即在重写为以/ foo /开头的所有URL后不适用.

RewriteCond %{REQUEST_URI} !^/foo/bar/
Run Code Online (Sandbox Code Playgroud)

另一方面,没有像我期望的那样工作.以/ foo/bar /开头的网址仍在重写中.

如何输入正确的正则表达式来排除子目录?

Gum*_*mbo 8

也许这是应用规则的内部重定向的新URL.该L标志做到这一点.

[...]如果RewriteRule生成内部重定向(在每个目录上下文中重写时经常发生),这将重新注入请求并将导致从第一个开始重复处理RewriteRule.

如果要确保初始URL路径不以"/ foo/bar"开头,请检查请求行(请参阅THE_REQUEST变量):

RewriteCond %{THE_REQUEST} !^[A-Z]+\ /foo/bar/
RewriteRule …
Run Code Online (Sandbox Code Playgroud)