我已经看了这个链接,但它没有涵盖我的需求。
我想为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演示