Как исправить предупреждение https при перенаправлении одного домена в другой домен с помощью перезаписи URL-адреса iis? - PullRequest
0 голосов
/ 23 марта 2019

У меня есть два домена, один сокращен и используется при отправке текстовых сообщений со строкой запроса, потому что обычный домен слишком длинный.В настоящее время веб-страница с другим IP-адресом перенаправляет короткий домен на длинный, либо на конкретную страницу, если у нее правильная строка запроса, либо на домашнюю страницу, если ее нет.Я переезжаю в Azure, где у меня будет только один IP-адрес.Поэтому я подумал, что IIS URL Rewrite сможет справиться с этой задачей.Длинный домен - это сайт только для HTTPS, и для него есть правило HTTPS.Короткого домена нет;ссылки всегда только HTTP.Я настроил URL Rewrite для перенаправления до того, как для обоих правил будет установлено правило HTTPS, а stopProcessing = "true".Но когда я захожу на http://mytxt.net,, в браузере появляется предупреждение о том, что сертификат SSL недействителен.

Сервер - Windows Server 2016 IIS 10. Я специально искал в Google и Stack Oveflow, но не нашел ничего, что соответствовало бы моей проблеме.Ниже приведен код.

        <rule name="Txt QS Redirect" stopProcessing="true">
          <match url="^(www\.)?mytxt\.net"/>
          <conditions>
            <add input="{QUERY_STRING}" pattern="^MyQS"/>
          </conditions>
          <action type="Redirect" url="https://www.myfullsite.net/respond.aspx" appendQueryString="true" redirectType="Temporary"/>
        </rule>
        <rule name="Txt No QS Redirect" stopProcessing="true">
          <match url="^(www\.)?mytxt\.net"/>
          <conditions trackAllCaptures="false">
            <add input="{QUERY_STRING}" pattern="^MyQS" negate="true"/>
          </conditions>
          <action type="Redirect" url="https://www.myfullsite.net/" redirectType="Permanent"/>
        </rule>
        <rule name="HTTPS Redirect">
          <match url="(.*)"/>
          <conditions>
            <add input="{HTTPS}" pattern="^OFF$"/>
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent"/>
        </rule>

Разве сначала не должно произойти перенаправление, а затем изменение протокола на HTTPS?Или браузеры сначала проверяют SSL, а когда IIS сообщает, что он включен, выполняет изменение протокола на клиенте?

1 Ответ

0 голосов
/ 25 марта 2019

Я решил свою проблему.Проблема была в регулярном выражении match url=.Возможно, некоторые гуру IIS URL Rewrite могут сказать нам, почему, потому что я до сих пор не понимаю этого.Я использовал Отслеживание невыполненных запросов , чтобы обнаружить, что оно не соответствует.Этот метод неоценим для устранения проблем перезаписи URL!Я изменил его на match url=".*" и переместил исходное регулярное выражение в условие.Вот рабочий код.

<rule name="Txt QS Redirect" stopProcessing="true">
  <match url=".*"/>
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTP_HOST}" pattern="^(www\.)?mytxt\.net"/>
    <add input="{QUERY_STRING}" pattern="^MyQS"/>
  </conditions>
  <action type="Redirect" url="https://www.myfullsite.net/respond.aspx" appendQueryString="true" redirectType="Temporary"/>
</rule>
<rule name="Txt No QS Redirect" stopProcessing="true">
  <match url=".*"/>
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTP_HOST}" pattern="^(www\.)?mytxt\.net"/>
    <add input="{QUERY_STRING}" pattern="^MyQS" negate="true"/>
  </conditions>
  <action type="Redirect" url="https://www.myfullsite.net/" redirectType="Permanent"/>
</rule>

URL, с или без www., которые начинаются с правильной строки запроса, перенаправляются на страницу, которая обрабатывает эти запросы;без правильной строки запроса они перенаправляются на домашнюю страницу сайта.

...