none
IIS redirect RRS feed

  • Вопрос

  • Добрый день.

    Есть сайт с публикациями баз  1С вида:

    Default Web Site

           site1

           site2

           site3


    Имеются внешние записи DNS    -    test.contoso.com и NEWTEST.contoso.com на этот IIS.

    Заходят на них следующим образом HTTPS:\\test.contoso.com\site1, HTTPS:\\test.contoso.com\site2, HTTPS:\\test.contoso.com\site3 

    Необходимо чтобы:

    1) при заходе по ссылке test.contoso.com (а это получается Default Web Site) срабатывал редирект на site1

    2) при заходе по ссылке newtest.contoso.com (тот же Default Web Site) срабатывал редирект на site2

    При этом можно было зайти на сайт site3 по ссылке test.contoso.com\site3

    Если я создам два правила на дефолтном сайте по редиректу они корректно будут отрабатывать?

    10 сентября 2021 г. 16:41

Все ответы

  • Никого(((
    13 сентября 2021 г. 11:29

  • 1) при заходе по ссылке test.contoso.com (а это получается Default Web Site) срабатывал редирект на site1

    Здравствуйте,

    У меня нет рядом сервера IIS для проверки, но попробуйте следующее правило:
    <configuration>
    <system.webServer>
    <rewrite>
          <rules>
            <rule name="Imported Rule - Site 1" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
              <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^test\.(.+)$" />
              </conditions>
              <action type="Redirect" url="http://{C:1}/test1/{R:1}" redirectType="Permanent" />
            </rule>
          </rules>
    </rewrite>
    </system.webServer>
    </configuration>


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    • Изменено SQxModerator 14 сентября 2021 г. 15:43 updated
    14 сентября 2021 г. 0:46
    Модератор

  • 2) при заходе по ссылке newtest.contoso.com (тот же Default Web Site) срабатывал редирект на site2

    Здравствуйте, 

    Аналогично для site2
    <configuration>
    <system.webServer>
    <rewrite>
          <rules>
            <rule name="Imported Rule - Site2" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
              <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^newtest\.(.+)$" />
              </conditions>
              <action type="Redirect" url="http://{C:1}/test2/{R:1}" redirectType="Permanent" />
            </rule>
          </rules>
    </rewrite>
    </system.webServer>
    </configuration>


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    • Изменено SQxModerator 14 сентября 2021 г. 15:43 updated
    14 сентября 2021 г. 0:48
    Модератор

  • 1) при заходе по ссылке test.contoso.com (а это получается Default Web Site) срабатывал редирект на site1

    2) при заходе по ссылке newtest.contoso.com (тот же Default Web Site) срабатывал редирект на site2

    Если не разберетесь, как совместить два и более правила, то вот вариант для двух пунктов вместе.

    <configuration>
    <system.webServer>
    <rewrite>
          <rules>
            <rule name="Imported Rule - Site 1" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
              <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^test\.(.+)$" />
              </conditions>
              <action type="Redirect" url="http://{C:1}/test1/{R:1}" redirectType="Permanent" />
            </rule>
            <rule name="Imported Rule - Site 2" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
              <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^newtest\.(.+)$" />
              </conditions>
              <action type="Redirect" url="http://{C:1}/test2/{R:1}" redirectType="Permanent" />
            </rule>
          </rules>
    </rewrite>
    </system.webServer>
    </configuration>



    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    • Изменено SQxModerator 14 сентября 2021 г. 15:43 updated
    14 сентября 2021 г. 1:08
    Модератор
  • Срабатывает редирект не совсем корректно, идет на ссылку  - 

    test/.contoso.com/site1

    Одну ошибку нашел уже, site1 добавляем мы. Но как убрать test/.  

    <action type="Redirect" url="http://{C:1}/{R:1}/site1" redirectType="Permanent" />

    • Изменено valex170286 14 сентября 2021 г. 6:17
    14 сентября 2021 г. 6:08

  • Одну ошибку нашел уже, site1 добавляем мы. Но как убрать test/.  

    Я пересмотрел вашу задачу, и переделал правила для site1
    <configuration>
    <system.webServer>
    <rewrite>
          <rules>
     		<!--# Exclude requests already going to /site1 to avoid an infinite loop -->
         	<rule name="Imported Rule 1 for Site1" stopProcessing="true">
           		<match url="^site1.*$" />
           		<action type="None" />
         	</rule>
       		 <!--# Redirect normal requests to /site1 -->
          	<rule name="Imported Rule 2 for Site1" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
    		   <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^test\.(.+)$" />
              </conditions>
              <action type="Redirect" url="https://{C:0}/site1/{R:1}" redirectType="Permanent" />
          	</rule>
          </rules>
    </rewrite>
    </system.webServer>
    </configuration>
    проверьте пожалуйста.

    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    • Изменено SQxModerator 14 сентября 2021 г. 19:28 updated
    14 сентября 2021 г. 15:53
    Модератор
  • Добрый день.

    Редирект идет по пути - 

    http://contoso.comsite1/

    15 сентября 2021 г. 7:13

  • Редирект идет по пути - 

    http://contoso.comsite1/

    Странно у меня срабатывает редирект на тестовом сервере:

    test.contoso.com -> https://test.contoso.com/site1

    {C:0} - www.contoso.com
    {C:1} - www.
    {C:2} - contoso.com

    Подробнее: URL Rewrite Module Configuration Reference | Microsoft Docs

    Попробуйте прописать домен следующим образом: https://test.contoso.com/site1


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    • Изменено SQxModerator 15 сентября 2021 г. 14:05 обновлено
    15 сентября 2021 г. 14:04
    Модератор
  • Добрый день.

    Частично разобрался - глюк браузеров из-за кеша.

    Проблема теперь в другом)))

    все работает и по первому имени, и по второму.

    Но при обращении по ссылке http://test1.contoso.com/site2  -> http://test1.contoso.com/site1/site2

    когда говоришь http://test1.contoso.com/site3   -> http://test1.contoso.com/site1

    Странный редирект)

    текст тут

      <rule name="Imported Rule 1 for Site1" stopProcessing="true">
            <match url="^site1.*$" />
            <action type="None" />
          </rule>
      
      <rule name="Imported Rule 2 for Site1" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
       <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^test1\.(.+)$" />
              </conditions>
              <action type="Redirect" url="http://{C:0}/site1" redirectType="Permanent" />
          </rule>

    15 сентября 2021 г. 14:48
  • Могли бы пожалуйста более подробнее указать какие-должны быть редиректы, а то по последнему вашему сообщению, не совсем понятно как должно работать.

    Например:
    test.contoso.com -> https://test.contoso.com/site1
    newtest.contoso.com -> https://test.contoso.com/site2

    и т.п.


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    15 сентября 2021 г. 15:52
    Модератор
  • Добрый день.

    Должно быть так

    1. test.contoso.com  -> test.contoso.com/site1 (Работает)

    2. newtest.contoso.com  -> test.contoso.com/site2 (еще не делал редирект)

    3. test1.contoso.com/site2  -> test1.contoso.com/site2 (сейчас идет на test1.contoso.com/site1)

    4. test1.contoso.com/site3  -> test1.contoso.com/site3 (сейчас идет на test1.contoso.com/site1)

    ПРИ ТАКИХ НАСТРОЙКАХ - <action type="Redirect" url="http://{C:0}/site1" redirectType="Permanent" />

    ЕСЛИ УКАЗАНЫ <action type="Redirect" url="http://{C:0}/site1/{R:1}" redirectType="Permanent" />, то последние два пункта меняются

    4. test1.contoso.com/site2 -> http://test1.contoso.com/site1/site2

    4. test1.contoso.com/site3 -> http://test1.contoso.com/site1/site3


    • Изменено valex170286 16 сентября 2021 г. 6:35
    16 сентября 2021 г. 6:34
  • Попробуйте так:
    <configuration>
    <system.webServer>
    <rewrite>
          <rules>
     		<!--# Exclude requests already going to /site1 to avoid an infinite loop -->
         	<rule name="Imported Rule 1 for Site1" stopProcessing="true">
           		<match url="^site[123].*$" />
           		<action type="None" />
         	</rule>
    		<!--# Redirect normal requests to /site2 -->
          	<rule name="Imported Rule 2 for Site1" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
    		   <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^(test|test1|newtest)\.contoso\.com$" />
              </conditions>
              <action type="Redirect" url="https://{C:0}/site1/{R:1}" redirectType="Permanent" />
          	</rule>
          </rules>
    </rewrite>
    </system.webServer>
    </configuration>


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    17 сентября 2021 г. 17:27
    Модератор
  • Добрый день.

    Все отлично работает, спасибо.

    Но есть один вопрос - при указании несуществующего сайта, например - http://test.contoso.com/site4 (site4 не существует) идет редирект на не существующую страницу 

     http://test.contoso.com/site2/site4 - т.е. он дописывает сам путь как-то странно, можно это подбравить?

    Вот дописал код


          <rule name="Imported Rule 1 for Site1" stopProcessing="true">
            <match url="^site[123].*$" />
            <action type="None" />
          </rule>

          <rule name="Imported Rule 2 for Site1" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
       <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^(test1)\.contoso\.com$" />
              </conditions>
              <action type="Redirect" url="http://{C:0}/site1/{R:1}" redirectType="Permanent" />
          </rule>
    <rule name="Imported Rule 2 for Site2" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
       <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^(test2)\.contoso\.com$" />
              </conditions>
              <action type="Redirect" url="http://{C:0}/site2/{R:1}" redirectType="Permanent" />
          </rule>

    27 сентября 2021 г. 11:41