Iis 7 在IIS7中将URL从https://重写为http://

Iis 7 在IIS7中将URL从https://重写为http://,iis-7,https,url-rewriting,url-rewrite-module,Iis 7,Https,Url Rewriting,Url Rewrite Module,我正在尝试重写表单中的URL: https://example.com/about 符合形式 http://example.com/about 使用: 我不知所措;我一直在网上浏览示例,并尝试我能想到的每一种语法。我指定的重写规则对于任何https请求似乎根本不起作用,好像所有的https://请求对重写引擎都是完全不可见的 规则运作良好;请参阅下面的答案。结果是,我将端口443绑定到了另一个网站 上述重写规则适用于http://到https://的重写,反之亦然——尽管可能有更好或更简

我正在尝试重写表单中的URL:

https://example.com/about
符合形式

http://example.com/about
使用:


我不知所措;我一直在网上浏览示例,并尝试我能想到的每一种语法。我指定的重写规则对于任何https请求似乎根本不起作用,好像所有的
https://
请求对重写引擎都是完全不可见的


规则运作良好;请参阅下面的答案。

结果是,我将端口443绑定到了另一个网站

上述重写规则适用于http://到https://的重写,反之亦然——尽管可能有更好或更简单的方法


把这个问题留给未来的旅行者去发现,因为我在网上没有看到很多关于https://到http://重写场景的好例子。

你的解决方案是可行的,但问题是:你的第二条指令杀死任何链接的第一条指令不是(.)计费/(),包括你的css、js和图像

您可以使用此https到http规则:

<rule name="HTTPS to HTTP redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{RequiresSSL:{R:1}}" pattern="(.+)" negate="true" />
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
<add input="{REQUEST_URI}" pattern="^(.+)\.(?!aspx)" negate="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}/{R:1}" />
</rule>

这篇文章有点老,但我想回答。我使用的是ASP.NETMVC3,上面Fabio的答案对我来说并不适用。我提出的处理https重定向到http的最简单解决方案,同时仍然允许有效的https页面请求安全内容,就是在我的https/http重定向之上添加白名单规则:

    <rule name="WhiteList - content folder" stopProcessing="true">
      <match url="^content/"/>
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false"/>
      <action type="None"/>
    </rule>
    <rule name="Redirect to HTTPS" stopProcessing="true">
      <match url="(.*)billing/(.*)" ignoreCase="true" />
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/billing/" redirectType="SeeOther" />
    </rule>
    <rule name="ForceNonHttps" stopProcessing="true">
      <match url="(.*)billing/(.*)" ignoreCase="true" negate="true" />
      <conditions>
        <add input="{SERVER_PORT}" pattern="^443$" />
      </conditions>
      <action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}{REQUEST_URI}" />
    </rule>


<>代码> < p>请首先考虑<强>绑定/<强> HTTPS到您的网站,使下面的重定向模块工作是必不可少的(因此绑定您的Web应用程序具有“强>自签名< /强>或<强>有效< /强>证书)

web.config的最后一部分,用于将https重定向到http

 <rewrite>
    <rules>
        <rule name="Force NonHTTPS" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
               <add input="{HTTPS}" pattern="on" />
            </conditions>
            <action type="Redirect" url="http://{HTTP_HOST}/{REQUEST_URI}" />
        </rule>
    </rules>
</rewrite>


来源:查看更多详细信息和分步指南。

对我来说,这是一个基本的安全“功能”,对我来说,这是一个服务器故障问题…@Charlie,不是。这是一个既涉及编码又涉及管理的问题,所以请将它留在网站上(就像许多脚本问题一样)这确实是一个很好的示例,可以将http配置为https,反之亦然。我只是在找这样的东西。我试过一些其他的,但他们有一个或其他的问题。旋转这个问题-它不能做没有一个有效的证书,对吗?也就是说,我无法强制https请求转到http,因为我没有安装证书……我发现使用上述https到http规则,我https页面上的所有css、javascript和图像资源都被作为http获取。我删除了这个规则,并添加了一个出站规则,将安全页面上的a href标记重写为http://{http_HOST}/{R:0},以强制从https切换到http。没有捕捉到使用https无意中手动导航到非安全页面,但这对mePat James来说没关系,我也有这个问题。你介意分享你的出境规则吗?谢谢你是个救生员。:)