Regex Match URL/Domain/Filename For IIS10



我已经看了这个链接,但它没有涵盖我的需求。

我想为IIS10创建一个正则表达式,它与某些标准相匹配,如果不匹配,那么就用类似重写的URL重定向到主页。

我对这个规则的尝试:

(https?://example.com).*?(/)?([Dd]?efault.aspx)?

我希望它能够根据以下URL进行检查:

好的URL:

https://example.com/default.aspx
https://example.com

错误的URL:

http://example.com/default.aspx
http://example.com/directory/somepagename.aspx
http://example.com/ 
http://example.com 
http://example.com/ADirectory/default.aspx
http://www.example.com/default.aspx
http://www.example.com/
http://www.example.com
https://www.example.com/default.aspx
https://www.example.com/
https://www.example.com

因此,任何HTTP URL都会被拒绝。任何具有HTTPS的URL,只要与两个GOOD URL中的一个匹配,都可以。任何有子目录的HTTPS url都是BAD url。域名中包含WWW的任何URL都应被拒绝(包括HTTPS(。区分大小写=否(不区分大小写(。

也许几个月后,我将替换IIS10规则,并在C#处理程序中使用它。

非常感谢

如果您不想只匹配http,请不要将s?设为可选。不使用可以匹配/.*?,而是可以使用与任何字符匹配的否定字符类,除了不允许子文件夹的正斜杠[^/]*

如果您不想允许尾部斜线,可以将其包含在最后一个可选组中,如果您想匹配整个字符串,可以使用锚^$

^(https://example.com)[^/]*(/?[Dd]?efault.aspx)?$

查看regex演示

最新更新