在IIS 7.5上运行的ASP.NET应用程序上强制Https

时间:2011-07-02 12:16:40

标签: asp.net regex iis iis-7 https

我在我的web.config文件中使用以下代码在我的整个网站上强制使用SSL;

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
                <match url="(.*)"/>
                <conditions>
                    <add input="{HTTPS}" pattern="^OFF$"/>
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
            </rule>
        </rules>
    </rewrite>
</system.webServer>

但我想做的是强制仅在~/purchase/~/account/路径下使用ssl。该匹配网址应该是什么?

注意正则表达式也适用于我和通配符。

2 个答案:

答案 0 :(得分:6)

您应该使用此模式(这适用于/purchase/something以及/account/something-else):

^((purchase|account)/.*)$

您必须记住,该网址不应包含前导斜杠/

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Force HTTPS" stopProcessing="true">
                    <match url="^((purchase|account)/.*)$" />
                    <conditions>
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

答案 1 :(得分:0)

你会做这样的事情(为简单起见,2个单独的规则)

  <match url="/purchase/(.*)"/>