IIS 将所有流量重写为 SSL

IIS 将所有流量重写为 SSL

我当前的配置是:

<rule name="Force HTTPS" enabled="true">
    <match url="(.*)" ignoreCase="false" />
    <conditions>
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action 
        type="Redirect" 
        url="https://{HTTP_HOST}{R:1}" 
        appendQueryString="true" 
        redirectType="Permanent" />
</rule>

并且指向 http 的链接不起作用。但是当您输入直接(主)网址时,上面描述的规则确实有效。Google 上列出的链接不起作用;它们没有,https 但规则应该重定向它们,对吗?我不明白。

当我直接转到图像示例时:http://www.domain.com/img.jpg这不起作用。https 确实起作用(手动输入时)我做错了什么?

现在我找到了这个网站,其中有一个示例:http://www.sslshopper.com/iis7-redirect-http-to-https.html

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>
    <action 
        type="Redirect" 
        url="https://{HTTP_HOST}/{R:1}" 
        redirectType="Found" />
</rule>

但看起来没什么不同。为什么我的配置不重定向谷歌链接和图像的直接链接,但重定向主域。所有指向页面的直接深层链接均不适用于 http。我收到一个server not found异常...

编辑:iis 管理器中未选中“需要 SSL”

编辑2:

这似乎有效:

<rule name="Force HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action 
        type="Redirect" 
        url="https://{HTTP_HOST}/{R:1}" 
        appendQueryString="true" 
        redirectType="Permanent" />
</rule>

但那不起作用为了: http://www.domain.com/app_themes/themeName/img.jpg

以及 http://www.domain.com/urlrewritten (使用 global.asax 中的 maproutes 重写)

答案1

<rule name="Force HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true"/>
    </conditions>
    <action 
        type="Redirect" 
        url="https://{HTTP_HOST}/{R:1}" 
        appendQueryString="true" 
        redirectType="Permanent" />
</rule>

可以工作,还可以通过 URL 重写映射路线等。已在 Internet Explorer、Firefox 和 Chrome 中测试过:)

相关内容