如何通过 web.config 将 http 重定向到 https 并将 www 重定向到非 www?
Posted
技术标签:
【中文标题】如何通过 web.config 将 http 重定向到 https 并将 www 重定向到非 www?【英文标题】:How to redirect http to https and www to non-www via web.config? 【发布时间】:2017-12-01 22:24:58 【问题描述】:我想使用 web.config 将我的 asp.net 站点上的所有请求重定向到非 www 的 https://。那就是:
http://
http://www
https://www
应该都去
https://
到目前为止,我的 web.config 有这个:
<system.webServer>
...
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="HTTPS" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://HTTP_HOSTREQUEST_URI" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
上面的 sn-p 负责重定向这两个:
http://
http://www
但我错过了最后一个,即:
https://www ---> https://
怎么做?
【问题讨论】:
【参考方案1】:您需要添加第二条规则:
<rule name="NonWwwRedirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="HTTP_HOST" pattern="^www.sitename\.com$" />
</conditions>
<action type="Redirect" url="http://sitename.com/R:1" />
</rule>
您只需将sitename.com
替换为您的域名
【讨论】:
我知道的旧帖子。我正在尝试做一个 http --> https 以及一个 www --> 非 www。action url="http://......."
不应该是action url="https://...."
吗?既然 OP 也想要 https 重定向?
在 .NET Core 3.1 中我收到 ERR_TOO_MANY_REDIRECTS 的每个客户端【参考方案2】:
这是一个对我有用的通用规则:
<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="http://C:2/R:1" appendQueryString="true" redirectType="Permanent" />
</rule>
【讨论】:
以上是关于如何通过 web.config 将 http 重定向到 https 并将 www 重定向到非 www?的主要内容,如果未能解决你的问题,请参考以下文章
Blazor WebAssembly - 如何在自动生成的 web.config 中添加“http 到 https”URL 重写规则
为啥不能通过 IIS7 中的 web.config 删除“服务器”响应标头?
如何防止web.config在网站更新时使用webdeploy覆盖
将 httpLogging 设置添加到 MVC web.config 时出现 HTTP 错误 500