这是一个相当新手的网址重写匹配问题。我希望能够匹配模式后面的所有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?
提前致谢。
答案 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/