将HTTP重定向到HTTPS,除了一个带有web.config的页面

时间:2016-12-25 18:33:14

标签: redirect iis web-config

我希望将所有页面从HTTP重定向到HTTPS,除了根目录中的一个页面(pagename.php),此页面需要作为HTTP工作(需要重定向回HTTP)。我目前有以下代码从none-www重定向到www和HTTP到HTTPS。



<rewrite>
      <rules>
        <rule name="Redirect to WWW" stopProcessing="true" >
          <match url="(.*)" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^www\." negate="true"/>
          </conditions>
          <action type="Redirect" url="https://www.{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
        </rule>
        <rule name="Redirect to HTTPS">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="OFF"/>
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
        </rule>
      </rules>
      <outboundRules>
        <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
          <match serverVariable="RESPONSE_Strict_Transport_Security"
              pattern=".*" />
          <conditions>
            <add input="{HTTPS}" pattern="on" ignoreCase="true" />
          </conditions>
          <action type="Rewrite" value="max-age=31536000" />
        </rule>
      </outboundRules>
    </rewrite>
&#13;
&#13;
&#13;

我需要在此角色中使用其他角色或异常来重写或重定向到HTTP的特定URL(我只需要将2个URL作为HTTP工作,它们只是具有.php页面扩展名的URL,而其他所有URL都是不同)。

我真的很感谢你的帮助。

1 个答案:

答案 0 :(得分:3)

你需要一个带有negate =“true”的条件来为你的php文件添加例外。

 <rule name="Redirect to HTTPS">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="OFF"/>
            <add input="{URL}" pattern="(.*).php" negate="true" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
 </rule>

 <!--EDIT-->
 <rule name="Redirect to HTTP">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="ON"/>
            <add input="{URL}" pattern="(.*).php" />
          </conditions>
          <action type="Redirect" url="http://{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
 </rule>