假设我有 https://helloworld.com 作为我的网站。现在填写 web.config 文件的最佳做法是什么?我的 SEO 分析器抱怨重定向链问题,即 https 被重定向到 http。但为什么?我做错了什么?我的服务器上有以下通用 web.config 文件,该文件已经工作了很长时间,但显然不再工作了:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<defaultDocument>
<files>
<remove value="index.php" />
<remove value="default.aspx" />
<remove value="iisstart.htm" />
<remove value="index.html" />
<remove value="index.htm" />
<remove value="Default.asp" />
<remove value="Default.htm" />
<add value="start.asp" />
</files>
</defaultDocument>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^helloworld\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://helloworld.com/{R:1}" />
</rule>
<rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{SERVER_PORT_SECURE}" pattern="^0$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
我用谷歌搜索了这个问题,但找不到正确的语法来解决它。
对于规则
HTTP/S to HTTPS Redirect
,将 <match url="(.*)" />
更改为 <match url="(^helloworld\.com$)" />
。您不需要一个包罗万象的重定向表达式,只需要一个处理特定域名的重定向表达式。