gpt4 book ai didi

iis-7 - IIS7 URL 重写 : How not to drop HTTPS protocol from rewritten URL?

转载 作者:行者123 更新时间:2023-12-03 11:05:46 26 4
gpt4 key购买 nike

我正在一个网站上工作,该网站使用 IIS 7 的 URL 重写功能进行从 example.com 到 www.example.com 的永久重定向,以及从类似域名重写到“主”域名,例如从 www。 examples.com 到 www.example.com。

这个重写规则 - 如下所示 - 已经运行了一段时间了。但是,我们最近添加了 HTTPS 支持,并注意到如果用户访问要重写为 www.example.com 的 URL 之一,则 HTTPS 将被删除。例如,如果用户访问 https://example.com他们被重定向到 http://www.example.com ,而我们希望将它们发送至 https://www.example.com .

这是我们感兴趣的重写规则(在 Web.config 中):

<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />

<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^example\.com$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example\.net$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example\.info$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?examples\.com$" />
</conditions>

<action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
</rule>

如您所见,action 元素的 url 属性直接指向 http://,所以我明白为什么 https://example.com重定向到 http://www.example.com .我的问题是,我该如何解决这个问题?我尝试(天真地)从 url 属性中删除 http://部分,但这没有用。

最佳答案

这是 Scott 对 Hasan 改进的回答。这应该涵盖混合 SSL/非 SSL 站点。该规则基本上是说“如果 url 没有 www.example.com”,则对其进行永久重定向。本质上...您正在将访问您的人重定向到没有 www 或直接访问您的 IP 地址。

<rewrite>
<rules>
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www\.example\.com$" negate="true" />
</conditions>
<action type="Redirect" url="{MapSSL:{HTTPS}}www.example.com/{R:1}" redirectType="Permanent" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="MapSSL" defaultValue="http://">
<add key="ON" value="https://" />
<add key="OFF" value="http://" />
</rewriteMap>
</rewriteMaps>
</rewrite>

关于iis-7 - IIS7 URL 重写 : How not to drop HTTPS protocol from rewritten URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com