2

残りの URL とクエリ文字列 (指定されている場合) を保持しながら、HTTP_URL に基づいて URL を別のポートにリダイレクトするように書き換えたいと考えています。たとえば、to およびtoに
http://host/john/page.aspxリダイレクトする必要があり ます。許可されたすべてのポートに一連のルールを追加しましたが、効率的または管理しにくいように見えます。 マップを使用しようとしています (つまり、john->1900、paul->1901) が、目的の URL を組み立てる方法がわかりません。 助言がありますか?http://host:1900/page.aspx,
http://host/paul/anotherpage.aspx?queryhttp://host:1901/anotherpage.aspx?query
http://host/ringohttp://host:1902/


4

1 に答える 1

9

それを機能させるには少し手間がかかりましたが、それを振り返ると、ソリューションは非常にシンプルでエレガントです。

<rewrite>
    <rules>
        <clear />
        <rule name="Redirect known names to ports" stopProcessing="true">
            <match url=".*" />
            <conditions trackAllCaptures="true">
                <add input="{REQUEST_URI}" pattern="/(.*?)/(.*)" />
                <add input="{NameToPort:{C:1}}" pattern="(.+)" />
            </conditions>
            <action type="Redirect" url="http://{HTTP_HOST}:{C:3}/{C:2}" appendQueryString="false" redirectType="Permanent" />
        </rule>
    </rules>
    <rewriteMaps>
        <rewriteMap name="NameToPort">
            <add key="john" value="1900" />
            <add key="paul" value="1901" />
            <add key="ringo" value="1902" />
        </rewriteMap>
    </rewriteMaps>
</rewrite>

これがあなたが探していたものであるかどうか私に知らせてください。

于 2012-11-09T12:21:39.477 に答える