我当前的配置是:
<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 中测试过:)