将一些 HTTP URL/AAM 重定向到 HTTPS
Posted
技术标签:
【中文标题】将一些 HTTP URL/AAM 重定向到 HTTPS【英文标题】:Redirect some HTTP URLs / AAMs to HTTPS 【发布时间】:2020-11-24 17:41:03 【问题描述】:我有一个在 IIS10 上运行 SharePoint Server 2019 的客户端,他们希望将 http 请求重定向到 https 以获取其环境中的几个 Web 应用程序/备用访问映射之一。 因此,Web 应用程序 http://intranet 和 http://intranet.domain.com 应该分别重定向到 https://intranet 和 https://intranet.domain.com 但 http://mysites 、 http://mysites.domain.com 和 http://CentralAdmin:12345 不应该。 同样,内部 SharePoint IIS 站点(例如 Security Token Service)位于以主机命名的 URL 上,例如:
http://sp19-app:32843/SecurityTokenServiceApplication/securitytoken.svc
应该独自一人。 我有一个用于 https://intranet 的内部 CA 生成的证书和一个用于 https://intranet.domain.com 的 Comodo 证书,具有有效的 SharePoint AAM 和 IIS 绑定,两者都在工作,可以访问各种 URL。
IIS URL 重写的大多数指南,包括 Ruslan 的 https://ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/#redirect-https 这个写得很好: https://www.namecheap.com/support/knowledgebase/article.aspx/9953/38/iis-redirect-http-to-https 和这个: http://www.jppinto.com/2010/03/automatically-redirect-http-requests-to-https-on-iis7-using-url-rewrite-2-0/
使用 (.*) 获取网站上的所有 URL
我想做的只是抓住并重定向范围内的
(intranet)(.)*
要么
^(http:\/\/intranet)(.)*
我都尝试过,虽然它们不会重定向关键服务应用程序或 MySites URL,但它们也不会始终重定向 Intranet URL。 我已经在 regex101.com 的测试面板中验证了所有受影响的 URL,它们看起来不错,但是有没有可能我的正则表达式没有我认为的那么热,或者 URL 重写使用了不同的实现呢?
例如,在条件下,我尽职尽责地添加了:
HTTPS
图案:^OFF$
在我看来,这意味着“如果 OFF 出现在字符串的开头,则出现在字符串的结尾”,这显然是无稽之谈。
我从阅读该主题的理解是,Conditions 的目的是创建异常,这可以阻止 HTTPS 请求被重定向到 HTTPS,这是非常明智的。
不过,我不清楚使用我添加的规则是如何得出这个结论的。
到部分的实际重定向是:
https://HTTP_HOSTREQUEST_URI
这似乎是最明智的,因为 SharePoint URL 将在 ? 之后包含查询字符串和各种内容。或 &。
Screenshot of redirect rule
URL 重写是基于 IIS 逐个站点配置的,所以也许我什么都不担心,我不需要修改正则表达式。如果是这样的话,我怀疑它可能是这样,我想我可以离开它。 但是,我讨厌有解决方案但不知道它是如何工作的,我希望能够自信地编写我的规则并确定他们会按照我的想法以及为什么会做。
【问题讨论】:
通过启用 FRT 进行调试来帮助自己,docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/… 我确实打开了 FRT,但没有发现任何有用的东西。 您是否分析了失败的请求跟踪日志文件?您在下面尝试过我的答案吗? 【参考方案1】:您需要添加另一个条件。你可以试试下面的规则。
<conditions>
<add input="HTTP_HOST" pattern="^Intranet.(.*)$" />
<add input="HTTPS" pattern="^off$" />
</conditions>
【讨论】:
以上是关于将一些 HTTP URL/AAM 重定向到 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
将 https://www 重定向到 https://non-www
负载均衡器后面带有 Spring Security 的 Spring Boot:将 HTTP 重定向到 HTTPS