重定向并删除www并添加https

时间:2016-12-07 20:25:08

标签: iis url-rewriting url-rewrite-module iis-8.5

此规则似乎运作良好,但当我转到this other answer时,它不会删除www。

但是,如果我转到https://www.example.com,它会按预期工作。

为什么不从https重定向?

<rewrite>
  <rules>
    <rule name="Remove WWW" stopProcessing="true">
      <match url="^(.*)$"/>
      <conditions>
        <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$"/>
      </conditions>
      <action type="Redirect" url="https://example.com{PATH_INFO}" redirectType="Permanent"/>
    </rule>
  </rules>
</rewrite>

1 个答案:

答案 0 :(得分:2)

根据我上面的评论,您的规则在您描述的方案中实际上对我有效。但是,我不认为它在处理对主机名中不包含www的不安全URL的请求时会处理这种情况。例如,http://example.com/blah/不会被重定向。以下规则也处理了这种情况:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Remove WWW and Ensure HTTPS" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{HTTP_HOST}" pattern="^(www\.)" />
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://example.com{REQUEST_URI}" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

规则检查以www开头的主机名或不安全的请求。如果满足任一条件,则重定向用户。