1

URL Rewriteモジュールを使用して、IIS7で正規のデフォルトURLを設定しようとしています。「MatchURL」フィールドの使い方を誤解していると思います。以下は何もしないようです:

    <rewrite>
        <rules>
            <rule name="EnforceDefaultPage">
                <match url="^http://(?:www\.)?mydomain\.com(?:/)?(?:blog\.aspx)?$" />
                <action type="Redirect" url="http://www.mydomain.com/blog" appendQueryString="false" />
            </rule>
        </rules>
    </rewrite> 

多くの例で、人々がHTTP_HOST変数を利用して条件を追加していることに気づきました...しかし、これは一致URLとどのように関連していますか?私の正規表現は私が望むものと完全に一致するので、条件を省略できるはずです。

4

1 に答える 1

5

ああ、私はついにそれを理解しました。明らかに、URLの「どれだけ」を照合に使用できるかは、ディレクトリ階層内のweb.configの場所によって異なります。コードをWebルートのweb.configに配置していたため、ドメイン名の後のすべてにのみ一致する可能性がありました(つまり、「 http://www.blog.com/」の「blog.com/」以降のすべてに一致する可能性があります。 ')。

私はここで答えを見つけました:http ://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference

「分散ルールに渡される入力URL文字列は、常にルールが定義されているWeb.configファイルの場所に関連していることに注意してください。たとえば、http://www.mysite.com/contentに対してリクエストが行われた場合/default.aspx?tabid=2&subtabid=3であり、書き換えルールが/ contentディレクトリで定義されている場合、ルールはこのURL文字列default.aspxを入力として取得します。」

于 2012-06-13T21:20:34.483 に答える