1

ファイル「/blah.txt」を除いて、自分のサイトへのすべての HTTP リクエストを HTTPS にリダイレクトしたいと考えています。これが私が試してきた基本的な書き換えルールです。{REQUEST_FILENAME} と {URL} を使用しようとしました。一致すると思われるいくつかの異なるパターンを試しました。

以下のルールは、blah.txt のリクエストを含むすべてのリクエストを HTTPS にリダイレクトします。

        <rewrite>
        <rules>
            <clear />
            <rule name="Redirect to HTTPS" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTPS}" pattern="^OFF$" />
                    <add input="{REQUEST_FILENAME}" matchType="Pattern" pattern="blah\.txt$" ignoreCase="true" negate="true" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
            </rule>
        </rules>
    </rewrite>  
4

2 に答える 2

2

私の考え方を変えてくれたブライアンに感謝します。バグのないコードに基づいて自分のソリューションが機能すると考えて行き詰まってしまうことがあります。実際、リライタにバグがあり、ルールを書く最初の試みが失敗するようです。ただし、このルールは機能します。

     <rewrite>
        <rules>
            <clear />
            <rule name="Temp" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{REQUEST_FILENAME}" pattern="blah\.txt$" />
                </conditions>
                <action type="None" />
            </rule>
            <rule name="Redirect to HTTPS" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTPS}" pattern="^OFF$" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
            </rule>
        </rules>
    </rewrite>  

一致するルールを他のルールの前に置き、ルールの処理を停止させるとうまくいくようです。

于 2012-08-06T16:34:41.353 に答える
1

私には1つのルールしか表示されません...それはすべてに一致するようです。ここには少なくとも2つのルールが必要です。

私はIISの書き換え機能にあまり詳しくありません。したがって、2つの質問:

「何もしない」アクションはありますか?

包括的なルールはすべてのリクエストに一致しませんか?おそらく、blah.txtルールを最初に置く必要があります。

于 2012-08-02T00:14:34.480 に答える