【问题标题】:How to properly match a folder / directory with trailing wildcards如何正确匹配带有尾随通配符的文件夹/目录
【发布时间】:2014-04-27 13:24:01
【问题描述】:

这是一个相当新手的 URL 重写匹配问题。我希望能够匹配所有遵循该模式的 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 触发?

提前致谢。

【问题讨论】:

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


    【解决方案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/
    

    【讨论】:

    • 这也是错误匹配 www.mydomain.com/anything/fooxxxxxx 的想法?
    • 好收获。一会儿在这里更新。
    • @Ductaa 现在已修复。
    • 完美。它现在可以按我的意愿工作。非常感谢您的帮助。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多