我们目前有如下 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>
如何/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>