将 IIS 中的 URL 重定向到不同的域并删除 URL 的部分内容

将 IIS 中的 URL 重定向到不同的域并删除 URL 的部分内容

我们目前有如下 URL:

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

我需要重定向到:

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

使用 IIS 中的 HTTP 重定向模块,我能够将请求从 转发https://tfs.mydomain.comhttps://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>

如何/tfs/MyProjectCollection在重定向 URL 时删除其部分内容?


更新:我也尝试安装 URL Rewrite 模块并像这样设置我的 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

我偶然发现了答案这个类似的问题。使用 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>

相关内容