1

我们正在使用 URL 重写模块来强制我们网站的登录部分通过 https,同时将所有其他部分保留在 http。这是我们添加的两条规则

  <rule name="Others Force HTTP" enabled="true" stopProcessing="true">
                    <match url="(((.*)/LogOn)|((.*)/Content(.*))|((.*)/Images(.*))|((.*)/Scripts(.*)))" negate="true" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTPS}" pattern="^ON$" />
                    </conditions>
                    <action type="Redirect" url="http://{SERVER_NAME}{REQUEST_URI}" redirectType="Permanent" />
                </rule>
                <rule name="Force on SSL" enabled="true" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTPS}" pattern="^OFF$" />
                        <add input="{REQUEST_URI}" pattern="^/users/account/LogOn(\?.*)*$" />
                    </conditions>
                    <action type="Redirect" url="https://{SERVER_NAME}{PATH_INFO}" redirectType="Permanent" />
                </rule>

但是,使用这些规则,Internet Explorer 会提示某些内容未通过安全连接传递,而 Google chrome 不会获取任何样式表、图像等。

Fiddler 表明,Web 服务器正在通过 HTTP 将所有请求重定向到 /Content /Images 等,根据第一条规则,IIS 服务器不应该这样做。

我们正在竭尽全力试图解决这个问题。一些帮助将不胜感激。

4

1 回答 1

1

尼基尔,

忽略图像和样式表的 HTTPS 到 http 重定向规则“其他强制 HTTP”可以解决这个问题,您可以像这样重写您的条件

<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
     <add input="{HTTPS}" pattern="^ON$" />
<add input="{REQUEST_URI}" pattern="^/Content*" negate="true" />
</conditions>

注意:您可以删除内容文件夹的url匹配条件

希望这可以帮助。

于 2013-11-04T12:52:41.730 回答