Azure перенаправляет службу приложений в пользовательский домен

#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 заработал!!!
Правило перенаправления должно быть определено над правилом углового, а имя правила должно быть уникальным