如何通过 IIS 专门重写/重定向具有 HTTPS 但没有子域的 URL 以包含 WWW。

如何通过 IIS 专门重写/重定向具有 HTTPS 但没有子域的 URL 以包含 WWW。

SmarterASP 是一个托管网站,如果您不想花 200 美元购买两年的服务,可以通过 Cloudflare 提供免费 SSL。问题是,它们不包括所有子域名,只包括“www”子域名。因此,如果您的网站上没有子域名,但更喜欢像“https://example.com“,那么您的网站将无法运行。

需要明确的是,其他所有形式的网站链接都是有效的;”http://example.com“”http://www.example.com“,”https://www.example.com“ 都有效。但对于“https://example.com“ 它不是。

我的问题是,使用 IIS 中的 URL 重写模块,是否有办法重写或重定向以“https://example.com“ 到 ”https://www.example.com“?我不太擅长正则表达式,

这是我尝试过的最好的方法,我确实认为它会起作用:

<rule name="rewriteHTTPSnoSUB">
    <match url="www.+" negate="true" />
    <action type="Redirect" url="https://www.example.com/{R:0}" />
</rule>

在我看来,这相当于“如果 URL 不包含“www.”,则将其重定向为包含“www.”,但它不起作用,因为它不知何故陷入了重定向循环。如果我将其设置为“重写”,则会出现 404。

不过,我不太擅长正则表达式,我想知道在从他们的网站上花 200 美元购买自定义 SSL 之前是否有办法,所以任何帮助我都非常感谢。谢谢!

答案1

正如@harrymc 所建议的,我尝试向客服投诉,但他们说除了花 200 美元购买 SSL 之外没有其他选择。真倒霉。

我从未找到该问题的真正答案,但实际上我能够解决这个问题,方法是使用单独的 Cloudflare 帐户并将其连接到 SASP 服务器,而不是使用 SASP 集成的 Cloudflare SSL。在 SASP 中,我可以将名称服务器指向 Cloudflare,在 Cloudflare 的网站上,我可以将流量指向 SASP 的 IP 地址,这样它就可以正常工作了。现在,我不再需要 SASP 提供的有限 SSL,而是可以从 Cloudflare 的 SSL 中获得全套免费选项。

如果其他人遇到这个问题,我会推荐这个过程,因为他们似乎并不介意,而且我的网站上线 7 个月了,没有任何问题。

答案2

一条可能满足您要求的规则(未经测试):

    <rule name="Redirect example.com to www" patternSyntax="ECMAScript" stopProcessing="true">
        <match url=".*" />
        <conditions>
            <add input="{HTTP_HOST}" pattern="^example.com$" />
        </conditions>
        <action type="Redirect" url="https://www.example.com/{R:0}" />
    </rule>

相关内容