0

我有一个在 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-请求到 https-on-iis7-using-url-rewrite-2-0/

用 (.*) 抓取网站上的所有 URL 我想做的只是用这个 (intranet)(.)*^(http:\/\/intranet)(.)*

这两种方法我都试过了,虽然它们不会重定向关键服务应用程序或 MySites URL,但它们也不会始终如一地重定向 Intranet URL。我已经在 regex101.com 的测试面板中验证了所有受影响的 URL,它们看起来不错,但是有没有可能我的正则表达式没有我认为的那么热,或者 URL 重写使用了不同的实现呢?

例如,在Conditions下,我尽职尽责地添加了: {HTTPS} pattern:^OFF$ 在我看来意味着“如果OFF出现在字符串的开头,则出现在字符串的末尾”,这显然是胡说八道。我从阅读该主题的理解是,Conditions 的目的是创建异常,这可以阻止 HTTPS 请求被重定向到 HTTPS,这是非常明智的。不过,我并不清楚使用我添加的规则是如何得出这个结论的。

实际重定向到部分是 : https://{HTTP_HOST}{REQUEST_URI} 这似乎是最明智的,因为 SharePoint URL 将在 ? 之后包含查询字符串和各种内容。或者 &。

重定向规则截图

URL 重写是基于 IIS 逐个站点配置的,所以也许我什么都不担心,我不需要修改正则表达式。如果是这样的话,我怀疑它可能是这样,我想我可以离开它。然而,我讨厌有解决方案但不知道它是如何工作的,我很快就能自信地编写我的规则,并确定他们会按照我认为他们会的方式以及为什么这样做。

4

1 回答 1

0

您需要添加另一个条件。你可以试试下面的规则。

    <conditions>
        <add input="{HTTP_HOST}" pattern="^Intranet.(.*)$" />
        <add input="{HTTPS}" pattern="^off$" />
    </conditions>
于 2020-08-05T03:31:21.887 回答