ASP.NET Core通过web.config实现www HTTPS转非www HTTPS失败求助
问题分析与解决
1. 是否需要重启应用
对于配置了hostingModel="inprocess"的ASP.NET Core应用,修改web.config后IIS通常会自动触发应用池回收,无需手动重启。但如果自动回收未生效,手动重启应用池可确保配置生效。不过当前的连接重置错误大概率是配置本身的问题,而非未重启。
2. 现有配置的核心问题
你使用的规则存在两处关键错误:
- 域名不匹配:规则中匹配的是
www.example.cz,重定向目标为example.cz,但你的需求是处理www.example.com到example.com的重定向,域名后缀完全不符。 - 逻辑分组不合理:使用
MatchAny会导致两种场景都触发重定向(非www的HTTP请求也会被转去example.cz),不符合你仅处理HTTPS环境下www转非www的需求。
3. 修正后的web.config配置
替换为以下规则,可精准实现https://www.example.com → https://example.com的重定向:
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\example.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> <rewrite> <rules> <rule name="Redirect HTTPS www to non-www" enabled="true" stopProcessing="true"> <match url="(.*)" /> <!-- 仅匹配HTTPS下的www.example.com --> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_HOST}" pattern="^www\.example\.com$" /> <add input="{HTTPS}" pattern="on" /> </conditions> <action type="Redirect" url="https://example.com/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </location> </configuration> <!--ProjectGuid: 8b668df1-7e1a-4d97-bd06-2ba62f95e6f5-->
4. 额外注意事项
- 确保服务器已正确配置覆盖
example.com和www.example.com的HTTPS证书,否则会触发SSL相关错误。 - 替换配置后若问题仍存在,可检查服务器防火墙/安全组是否拦截请求,或查看IIS日志定位具体错误原因。
内容的提问来源于stack exchange,提问作者Clor ky
相关产品推荐
相关产品推荐

