Назад | Перейти на главную страницу

Перенаправить URL-адрес в IIS в другой домен и удалить части URL-адреса

В настоящее время у нас есть такие 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>