如果URL为http://,则URL重写更新协议和域

时间:2014-06-30 08:33:49

标签: url iis url-rewriting rewrite

我想使用在IIS 8.5上运行的URL重写将所有对http://www.domain.com/csp/的调用重定向到https://secure.doman.com/csp/。我希望浏览器上的URL相应更新。我无法让它发挥作用。

以下是带有规则

的web.config文件部分
     <rules>
    <rule name="CSP to SSL" enabled="true" stopProcessing="true">
       <match url="^http://www.domain.com/csp/(.*)$" />
       <conditions>
                    <add input="{CACHE_URL}" pattern="^http://" />
       </conditions>
       <action type="Redirect" url="https://secure.domain.com/csp/{R:1}" />
    </rule>
  </rules>

谢谢。

1 个答案:

答案 0 :(得分:1)

感谢peterviola在http://forums.iis.net/t/1214515.aspx?Change+to+https+and+adjust+domain+if+URL+uses+http+and+matches+a+particular+path的回复,我设法找到了我正在寻求的解决方案。

           <rule name="csp2HTTPS" enabled="true" stopProcessing="true">
                <match url="(.*)csp/(.*$)" ignoreCase="true" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTPS}" pattern="off" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="true" redirectType="Permanent" />
            </rule>
            <rule name="csp2subdomain" enabled="true" stopProcessing="true">
                <match url="(.*)csp/(.*$)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTP_HOST}" pattern="^(www.|)domain.com$" />
                </conditions>
                <action type="Redirect" url="https://secure.domain.com{REQUEST_URI}" appendQueryString="true" redirectType="Permanent" />
            </rule>

以上解决方案有效。我无法理解为什么使用一条规则无法做到这一点。

希望这有帮助。