将https:// www重定向到https:// no-www Web配置您的连接不安全

时间:2018-08-29 23:55:23

标签: asp.net iis-7 web-config url-redirection http-redirect

我有这段代码,效果很好

<rule name="Force non-WWW" enabled="true" stopProcessing="true">
 <match url="(.*)" />
 <conditions logicalGrouping="MatchAny">
 <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
 </conditions>
 <action type="Redirect" url="https://{C:2}/{R:1}" appendQueryString="true" />
</rule>
<rule name="Force HTTPS" enabled="true" stopProcessing="true">
 <match url="(.*)" />
 <conditions logicalGrouping="MatchAny">
 <add input="{HTTPS}" pattern="off" />
 </conditions>
 <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" />
</rule>

我为一个域https://example.com购买了SSL证书

如果用户使用 https://www.exmple.com

键入域名

他收到此错误您的连接不安全

该网站无法重定向到https://example.com并保持此错误状态。 但对于www.example.comexample.com之类的其他系统类型,代码可以正常运行

如何在出现此错误之前重定向

也许我需要这段代码,但是在web.config中,我不知道如何在web.config中编写

# BEGIN SSL
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?replace-with-your-URL\.com$ [NC]
RewriteRule ^$ https://replace-with-your-URL.com$1 [R,L]
# END SSL 

2 个答案:

答案 0 :(得分:0)

由于规则顺序,这些规则可与example.comwww.example.com配合使用-删除www然后重定向到https://,以便将其重定向到https://example.com < / p>

要验证是否交换了规则顺序,请转到www.example.com,您将收到Your conection is not secure消息。

该规则将始终适用于未加密的HTTP。

仅使用SAN的example.com会在使用https://www.example.com时导致此问题,因为第一个规则永远不会执行,因为浏览器不允许更改,因为证书与服务器名称不匹配。

如果您可以获得多名证书,则添加www.example.com或什至最好获得通配符*.example.com-然后所有内容都将执行带状www规则。

除非服务器名称与证书匹配,否则您已经没有规则可以对URL进行加密了。

答案 1 :(得分:0)

SSL / TLS握手发生在URL重写之前,不幸的是,许多人都忽略了它。

您必须为Web浏览器提供www.site.com和site.com的有效证书。否则,Web浏览器在未检测到有效证书时将生成警告。

根据您的预算,应该使用具有多个主机名的SAN证书或具有正确SNI映射的两个证书。有了Let's Encrypt提供的免费证书(无论是否有SAN),都几乎不需要购买证书(除非您经营有更高要求的企业)。