我正在尝试强制在IIS下运行的网站始终以https模式运行并重定向到包含www的完整根名称,以便SSL证书正常工作。
以下是web.config条目:
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{HTTP_HOST}" pattern="^somewebsite.com$" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://www.{HTTP_HOST}{REQUEST_URI}" />
</rule>
</rules>
</rewrite>
</system.webServer>
这适用于首次请求,例如有人首次请求:浏览器URI中的somewebsite.com,它们将自动重定向到https://www.somewebsite.com。但是,一旦加载了站点并且用户手动删除浏览器URI中的www或https,服务器就不会执行后续重定向。这是设计,规则是否可以始终执行?
答案 0 :(得分:1)
这是我在所有实时SSL网站上使用的内容。我使用了2条规则,从未遇到任何问题:
<rule name="Redirect domain.com to www" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTP_HOST}" pattern="domain.com" />
</conditions>
<action type="Redirect" url="https://www.domain.com/{R:0}" />
</rule>
<rule name="HTTP to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>