重定向并删除 www 并添加 https

Redirect and remove www and add https

这条规则似乎工作正常,但是当我转到 https://www.example.com 时它不会删除 www.

但是,如果我转到 http://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>

根据我上面的评论,在您描述的场景中,您的规则实际上对我有用。但是,我认为它不会处理向主机名中不包含 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 开头的主机名或不安全的请求。如果满足任一条件,用户将被重定向。