iis url将http重定向到www https,但不包括一页

时间:2014-02-18 09:50:03

标签: regex iis redirect

类似的问题被多次询问,但我仍在努力与“一页排除”部分。我的解决方案基于例如iis url redirect http to non www https但此解决方案不是100%。它不适用于[https www domain com]到[https domain com](非www的www部分早期还原)

我希望排除链接http://www.domain.com/ezine/some-more-url

这是我到目前为止的地方:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Canonical Host Name (HTTP)" stopProcessing="true">
                    <match url="(.*)" />

                    <conditions logicalGrouping="MatchAll">
                        <add input="{HTTPS}" pattern="OFF" />
                        <add input="{HTTP_HOST}" pattern="(?=^domain\.com)(?=^(.(?!\/ezine\/))*$)" />
                    </conditions>

                    <action type="Redirect" url="http://www.domain.com/{R:1}" redirectType="Permanent" />
                </rule>

                <rule name="Canonical Host Name (HTTPS) www" stopProcessing="true">
                    <match url="(.*)" />

                    <conditions logicalGrouping="MatchAll">
                        <add input="{HTTPS}" pattern="OFF" />
                        <add input="{HTTP_HOST}" pattern="(?=^www.domain\.com)(?=^(.(?!\/ezine\/))*$)" />
                    </conditions>

                    <action type="Redirect" url="https://www.domain.com/{R:1}" redirectType="Permanent" />
                </rule>

                <rule name="Canonical Host Name (HTTPS)" stopProcessing="true">
                    <match url="(.*)" />

                    <conditions logicalGrouping="MatchAll">
                        <add input="{HTTPS}" pattern="ON" />
                        <add input="{HTTP_HOST}" pattern="(?=^domain\.com)(?=^(.(?!\/ezine\/))*$)" />
                    </conditions>

                    <action type="Redirect" url="https://www.domain.com/{R:1}" redirectType="Permanent" />
                </rule>

            </rules>
        </rewrite>
    </system.webServer>
</configuration>

我测试了正则表达式,看起来很好。它仍然在http://www.domain.com/ezine/some-more-url重定向到https_://www.domain.com/ezine/some-more-url的任何原因。 其他一切都在运作

对于那些问我为什么需要它的人被排除在外:(但这是一个不同的故事)

Exception: Source:System, Message:The underlying connection was closed: 
Could not establish trust relationship for the SSL/TLS secure channel., 

InnerException:System.Security.Authentication.AuthenticationException: 
The remote certificate is invalid according to the validation procedure. 
at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) at
System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken m 

1 个答案:

答案 0 :(得分:0)

我不确定这对任何人都有用,但我终于把它分类了:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="Canonical Host Name (HTTP)" stopProcessing="true">
                <match url="(.*)" />

                <conditions logicalGrouping="MatchAll">
                    <add input="{HTTPS}" pattern="OFF" />
                    <add input="{HTTP_HOST}" pattern="^domain\.com$" />
                    <add input="{URL}" pattern="^(.(?!ezine\/))*$" />                                   
                </conditions>

                <action type="Redirect" url="http://www.domain.com/{R:1}" redirectType="Permanent" />
            </rule>
            <rule name="Canonical Host Name (HTTPS) www" stopProcessing="true">
                <match url="(.*)" />

                <conditions logicalGrouping="MatchAll">
                    <add input="{HTTPS}" pattern="OFF" />
                    <add input="{HTTP_HOST}" pattern="^www.domain\.com$" />
                    <add input="{URL}" pattern="^(.(?!ezine\/))*$" />                                   
                </conditions>

                <action type="Redirect" url="https://www.domain.com/{R:1}" redirectType="Permanent" />
            </rule>
            <rule name="Canonical Host Name (HTTPS)" stopProcessing="true">
                <match url="(.*)" />

                <conditions logicalGrouping="MatchAll">
                    <add input="{HTTPS}" pattern="ON" />
                    <add input="{HTTP_HOST}" pattern="^domain\.com$" />
                </conditions>

                <action type="Redirect" url="https://www.domain.com/{R:1}" redirectType="Permanent" />
            </rule>

        </rules>
    </rewrite>      
</system.webServer>
</configuration>