web-dev-qa-db-ja.com

web.configに複数のURL書き換えルールを追加する方法

Web.configに複数のURL書き換えルールを追加する方法

「sales」と「registrationsuccess」を含むURLに一致させたい。

次のことを試みるとエラーが発生します。

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

これは、複数のルールを追加する方法です。

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

しかし、あなたがやろうとしていることのために、以下のような1つのルールでそれを行うことができます:

<rule name="Redirect to HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAny">
        <add input="{HTTPS}" pattern="ON" />
        <add input="{PATH_INFO}" pattern="^(.*)/sales/(.*)" />
        <add input="{PATH_INFO}" pattern="^(.*)/registrationsuccess/(.*)" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Permanent" />
</rule>
30
Tom Hall