RegEx匹配除包含admin的所有网站链接

时间:2013-09-02 20:02:11

标签: regex iis url-rewrite-module

我在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的解决方案,但是一旦我尝试将它们组合起来,要么它们都不匹配,要么全部都匹配。

我希望有人可以帮助我。

2 个答案:

答案 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]+/?)*

这应该可以解决问题