如何正确匹配文件夹/目录与尾随通配符

时间:2014-03-20 15:16:51

标签: iis-7 url-rewriting web-config url-rewrite-module

这是一个相当新手的网址重写匹配问题。我希望能够匹配模式后面的所有URI,并将所有这些匹配重定向到一个地方。

以下网址应匹配:

www.mydomain.com/foo/*

www.mydomain.com/foo

以上所有内容都应重定向到www.mydomain.com/xyz/abc/something.html

因此,以下内容应该匹配:

www.mydomain.com/foo
www.mydomain.com/foo/bar
www.mydomain.com/foo/bar/baz.html

以下匹配:

www.mydomain.com/blah/foo
www.mydomain.com/bloo/foo/blee
www.mydomain.com/bling/foo/blurp/blomp.html

我(或许天真地)设定了这条规则:

<rule name="Rule1" stopProcessing="true">
  <match url="foo/(.*)" />
  <action type="Redirect" url="/xyz/abc/something.html" appendQueryString="true" redirectType="Permanent"/>
</rule>

此规则适用于

www.mydomain.com/foo/
www.mydomain.com/foo/bar

但它没有为

开火
www.mydomain.com/foo (note missing trailing slash)

这是错误的解雇

www.mydomain.com/anything/foo/

如何确保规则仅针对以/ foo开头的URI触发,并且还触发以/ foo开头并且没有尾部斜杠的URI?

提前致谢。

1 个答案:

答案 0 :(得分:1)

这条规则可以胜任:

<match url="(^foo/(.*))|(^foo$)" />

这将确保它始终匹配foo。

这将匹配

www.mydomain.com/foo  (with missing trail)
www.mydomain.com/foo/ 
www.mydomain.com/foo/bar    
www.mydomain.com/foo/bar/baz.html

不匹配任何东西

www.mydomain.com/anything/foo/