В настоящее время у нас есть такие URL-адреса:
https://tfs.mydomain.com/tfs/MyProjectCollection/Project/_workitems
что мне нужно перенаправить на:
https://dev.azure.com/MyOrg/Project/_workitems
Используя модуль HTTP Redirect в IIS, я смог перенаправить запросы от 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>
Я нашел ответ, наткнувшись на этот похожий вопрос. Используя модуль 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>