当用户输入domain.com时,它应该重定向到我的应用程序https://www.domain.com。目前它没有发生,它显示一个页面“此连接不受信任”。
我在web.config中添加了以下重写标记:
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
目前在我的IIS 7.5中我添加了入站规则,我有如下设置:
在匹配网址
中请求的网址:匹配模式
使用:Reqular Expression
模式:(。*)
忽略案例:已检查
条件
逻辑分组:全部匹配
输入:{HTTPS}
类型:匹配模式
模式:^ OFF $
跨越条件跟踪组:未选中
动作
操作类型:重定向
重定向网址:https:// {HTTP_HOST} / {R:1}
追加查询字符串:已选中
重定向类型:请参阅其他(303)
如果可以对现有设置进行任何更改,请与我们联系。
提前致谢。
答案 0 :(得分:4)
您的重写规则只是重定向到同一个域。因此,如果用户只输入domain.com
(默认为http),则会重定向到https://domain.com
。如果您的SSL证书不包含domain.com
但仅包含www.domain.com
,则会导致浏览器提示有关错误证书的警告。虽然现在大多数证书颁发机构都会发布带有和不带www的域的证书(但可能不是你的)。
如果您希望用户始终使用https://www.domain.com
(始终使用www),则应使用以下重写规则:
<rule name="Force HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" negate="true" pattern="^ON$" />
<add input="{HTTP_HOST}" negate="true" pattern="^www\.domain\.com$" />
</conditions>
<action type="Redirect" url="https://www.domain.com{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>
它将强制使用SSL并强制www.domain.com
作为主机标头。如果没有,它将向同一URL发出永久重定向(= beter)。