web-dev-qa-db-ja.com

IISのURLを別のドメインにリダイレクトし、URLの一部を削除します

現在、次のようなURLがあります。

https://tfs.mydomain.com/tfs/MyProjectCollection/Project/_workitems

私がリダイレクトする必要があること:

https://dev.Azure.com/MyOrg/Project/_workitems

IISでHTTPリダイレクトモジュールを使用すると、https://tfs.mydomain.comからhttps://dev.Azure.com/MyOrgに問題なくリクエストを転送できました。

問題は、それがディープリンクの場合、リダイレクトするときにリンクの/tfs/MyProjectCollection部分を削除する必要があることです。ルートドメインをリダイレクトするという私の現在のセットアップでは、次の要求を行います。

https://tfs.mydomain.com/tfs/MyProjectCollection/Project/_workitems

最終的にリダイレクトされます:

https://dev.Azure.com/MyOrg/tfs/MyProjectCollection/Project/_workitems

希望の代わりに:

https://dev.Azure.com/MyOrg/Project/_workitems

これは私のweb.configが現在どのように見えるかです:

<configuration>
    <system.webServer>
        <httpRedirect enabled="true" destination="https://dev.Azure.com/MyOrg" httpResponseStatus="Permanent" />
    </system.webServer>
</configuration>

リダイレクトするときにURLの/tfs/MyProjectCollection部分を削除するにはどうすればよいですか?


更新:URL書き換えモジュールをインストールして、web.configをこのように設定してみましたが、結果は同じです。

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="IQProjectCollection" stopProcessing="true">
                    <match url="^tfs/IQProjectCollection$" />
                    <action type="Redirect" url="https://dev.Azure.com/iqmetrix" />
                </rule>
                <rule name="tfs" stopProcessing="true">
                    <match url="^tfs$" />
                    <action type="Redirect" url="https://dev.Azure.com/iqmetrix" />
                </rule>
                <rule name="home" stopProcessing="true">
                    <match url="^$" />
                    <action type="Redirect" url="https://dev.Azure.com/iqmetrix" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
1
deadlydog

私はつまずいて答えを見つけました この同様の質問 。 IIS URL Rewriteモジュールを使用すると、これが私のweb.configが私が望むことを実行するように見えるものです。ルールの順序が重要です(最も具体的から最も具体的ではない)。

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="IQProjectCollection" stopProcessing="true">
                    <match url="^tfs/MyProjectCollection/(.*)" />
                    <action type="Redirect" url="https://dev.Azure.com/MyOrg/{R:1}" />
                </rule>
                <rule name="tfs" stopProcessing="true">
                    <match url="^tfs/(.*)" />
                    <action type="Redirect" url="https://dev.Azure.com/MyOrg/{R:1}" />
                </rule>
                <rule name="home" stopProcessing="true">
                    <match url="^$" />
                    <action type="Redirect" url="https://dev.Azure.com/MyOrg" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
1
deadlydog