#azure #azure-devops #azure-functions #azure-web-app-service #web-config
Вопрос:
Я пытаюсь перенаправить домен по умолчанию в пользовательский домен, используя файл web.config в корневом каталоге службы приложений. В моем случае, https://default.azurewebsites.net чтобы https://app.customdomain.com что работает, но https://default.azurewebsites.net/login не перенаправляет на https://app.customdomain.com мой рабочий конфигурационный файл
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="./index.html" />
</rule>
<rule name="Redirect rquests to default azure websites domain" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^default.azurewebsites.net$" />
</conditions>
<action type="Redirect" url="https://app.customdomain.com/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Я также попытался добавить два правила, но это не сработало
<rule name="Redirect rquests to default azure websites domain for login" stopProcessing="true">
<match url="(.*)/login" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^default.azurewebsites.net$" />
</conditions>
<action type="Redirect" url="https://app.customdomain.com/login/{R:0}" />
</rule>
<rule name="Redirect rquests to default azure websites domain" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^default.azurewebsites.net$" />
</conditions>
<action type="Redirect" url="https://app.customdomain.com/{R:0}" />
</rule>
Также попробовал одно правило с несколькими условиями. не сработало
<rule name="Redirect rquests to default azure websites domain" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^default.azurewebsites.net$" />
<add input="{HTTP_HOST}" pattern="^default.azurewebsites.net/login" />
</conditions>
<action type="Redirect" url="https://https://app.customdomain.com/{R:0}" />
</rule>
еще несколько комбинаций с регулярным выражением также попробовали, но все равно безуспешно.
Комментарии:
1. Вы перенаправляетесь на другой веб-сайт ? Чего вы пытаетесь достичь ?
2. Полезен ли вам мой ответ ?
3. @Thomas У меня есть служба приложений, где размещен веб-сайт angular, домен которого по умолчанию.azurewebsites. net Я также настроил пользовательский домен для той же службы приложений, что и app.customdomain.com Если я перейду по нижеприведенному URL-адресу по умолчанию.azurewebsites. сетевые перенаправления на app.customdomain.com -> ХОРОШО default.azurewebsites.net/login перенаправляет на default.azurewebsites.net/login ->> Ожидаемый результат KO default.azurewebsites.net/login ->>> app.customdomain.com похоже на >>> zainrizvi.io/blog/block-default-azure-websites-domain
Ответ №1:
Используй <match url="(.*)^login" />
, это работает на меня.
Пожалуйста, сначала проверьте мои результаты теста.
Мой web.config
.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="a page" stopProcessing="true">
<match url="(.*)^a" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern=".*" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="https://jasonp2.azurewebsites.net/a.html" redirectType="Temporary" />
</rule>
<rule name="b page" stopProcessing="true">
<match url="(.*)^b" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern=".*" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="https://jasonp2.azurewebsites.net/b.html" redirectType="Temporary" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Комментарии:
1. Спасибо за ваше драгоценное время.. позвольте мне протестировать и обновить вас здесь
2. Пытался … но все равно не повезло
3. Ты был прав.. но неправильное расположение углового правила вызвало ошибку.. В любом случае, спасибо
Ответ №2:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect default azure domain to custom domain" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^testing.azurewebsites.net" />
</conditions>
<action type="Redirect" url="https://grew.mydomain.com/login" />
</rule>
<rule name="Redirect default azure domain login url to custom domain" stopProcessing="true">
<match url="(.*)^login" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^testing.azurewebsites.net" />
<add input="{PATH_INFO}" pattern="^/login" />
</conditions>
<action type="Redirect" url="https://grew.mydomain.com/login" />
</rule>
<rule name="Angular rule" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="./index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Наконец-то приведенный выше файл web.config заработал!!!
Правило перенаправления должно быть определено над правилом углового, а имя правила должно быть уникальным