IIS10 的正则表达式匹配 URL/Domain/Filename

Regex Match URL/Domain/Filename For IIS10

我看过 this link 但它不符合我的要求。

我想为 IIS10 创建一个与某些 critea 匹配的正则表达式,如果它不匹配,则使用 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

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

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

非常感谢

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

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

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

看到一个regex demo