3

目前只有一页和所有依赖项(css、jpg 等)是 SSL。我创建了以下重写:

  <rule name="Not Appointment Form 4.1 SSL" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
      <match url=".*" negate="false" />
      <conditions>
          <!-- check if https is on -->
          <add input="{HTTPS}" pattern="on" />

          <!-- I'm only interested in the aspx files -->
          <add input="{PATH_TRANSLATED}" pattern=".aspx$" /> 

          <!-- anything BUT the page to be secured -->
          <add input="{PATH_INFO}" pattern="page-to-be-secured.aspx" negate="true" /> 
      </conditions>
      <action type="Redirect" url="http://mydomain{PATH_INFO}" redirectType="Permanent" />
  </rule>   

我尝试将页面名称放在匹配 url (negate="false") 中,但仍然无法正常工作。

我已经测试了每个单独的条件,它们都单独工作,但作为一个整体,它并没有重定向到非 HTTPS 页面。

4

1 回答 1

2

一个简单的方法是:

<rule name="Not Appointment Form 4.1 SSL" stopProcessing="true">
    <match url="^(.*)\.aspx$" />
    <conditions>
        <add input="{R:1}" pattern="page-to-be-secured" negate="true" />
        <add input="{HTTPS}" pattern="^ON$" />
    </conditions>
    <action type="Redirect" url="http://{HTTP_HOST}/{R:0}" />
</rule>

该规则适用于以 . 结尾的每个请求的 url .aspx{R:1}如果与之前部分对应的第一个反向引用 ( ).aspx不匹配page-to-be-secured并且正在使用HTTPS,则触发重定向。

于 2013-05-15T15:23:04.757 回答