在 IIS 中从非 www 重定向到 www 和 http 到 https

redirection from non-www to www and http to https in IIS

我正在尝试从非 www 站点重定向到 www 以及从 http 重定向到 https。

HTTP 到 https 运行良好,但非 www 到 www 显示找不到页面错误。

这是我的配置:

         <rules>
            <clear />
            <rule name="non-www to www" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                    <add input="{HTTP_HOST}" pattern="^mydomain.com$" />
                </conditions>
                <action type="Rewrite" url="https://www.{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
            </rule>
            <rule name="http to https" patternSyntax="Wildcard" stopProcessing="true">
                <match url="*" />
                <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                    <add input="{HTTPS}" pattern="OFF" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
            </rule>
        </rules>

这是怎么回事?我已经尝试了几种从非 www 到 www 的变体,所有变体都来自 google 中的站点,但没有成功。

海梅

从评论中复制了更多解释。

操作应设置为 Redirect 而不是 Rewrite,因为您确实希望搜索引擎显示 www 链接,然后您的网站必须向其漫游器发出 301 重定向。

Even if you sometimes want Rewrite, the url must be a relative path to the same site. If rewriting to another site (like the one you used above), then ARR is required with proxy mode. Otherwise, IIS naturally returns 404 errors.

However, rewriting does not change URLs in browser address bar, so it also has no effect on search engine bots.

Reference