我在IIS上设置URL Rewrite,我需要使用正则表达式匹配以下网址。
http://sub.mysite.com sub.mysite.com sub.mysite.com/ sub.mysite.com/Site1 sub.mysite.com/Site1/admin
但不是:
sub.mysite.com/admin sub.mysite.com/admin/somethingelse sub.mysite.com/admin/admin
它自己的网站(sub.mysite.com
)不应该在表达式中“硬编码”。相反,它应该匹配.*
。
我真的很茫然。我确实找到了匹配不同URL的解决方案,但是一旦我尝试将它们组合起来,要么它们都不匹配,要么全部都匹配。
我希望有人可以帮助我。
答案 0 :(得分:4)
对于您的具体情况,假设您匹配域之后的部分(REQUEST_URI):
(?!/admin).*
(?!...)
是negative lookahead。我不确定IIS URL重写引擎是否支持它。如果没有,更好的方法是检查补充方法:
或者正如@kirilloid所说,只需匹配/admin/?
并弃掉(注意斜线)。
顺便说一句。如果您想通过“视觉”反馈快速测试RegExps,我强烈推荐http://gskinner.com/RegExr/
答案 1 :(得分:1)
([A-Za-z0-9]+.)+.com(?!/admin)/?([A-Za-z0-9]+/?)*
这应该可以解决问题