У меня есть правило перезаписи htaccess:
RewriteCond %{HTTP_HOST}: ^(?:www\.)?samplesite\.net
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
на двух лазурных виртуальных машинах под управлением IIS. У меня есть шлюз приложений, который находится впереди, у которого есть внутренний пул Https с серверами сертификатов двух лазурных виртуальных машин.
У меня есть многосайтовый прослушиватель https на шлюзе, который прослушивает трафик https на шлюз с определенным URI www.samplesite.net. Есть прикрепленное правило, которое использует пул backendHttps.
На виртуальных машинах размещено несколько сайтов, и я хочу перенаправить HTTP на HTTPS только для этого сайта. У меня есть закрытый ключ для www.samplesite.net на шлюзе Azure для слушателя.
Если я укажу прямо на любую виртуальную машину, я успешно перенаправлюсь на HTTPS. Если я укажу на шлюз, я получаю слишком много ошибок перенаправления.
Если я не переписываю на сервере, я могу без проблем перейти на HTTPS или HTTP через шлюз.
Почему я получаю это перенаправление, если у меня есть сквозное шифрование?
Изменить: в отношении использования правил шлюза для перенаправления трафика:
Правила обрабатываются в том порядке, в котором они перечислены, и трафик направляется с использованием первого совпадающего правила независимо от специфичности. Например, если у вас есть правило, использующее базовый прослушиватель, и правило, использующее многосайтовый прослушиватель, оба на одном и том же порте, правило с многосайтовым прослушивателем должно быть указано перед правилом с основным прослушивателем, чтобы для многосайтового прослушивателя - правило сайта должно функционировать должным образом.
Edit2: Если кому-то интересно, я должен был сделать это:
RewriteCond %{HTTP_HOST}: ^(?:www\.)?samplesite\.net
RewriteCond %{HTTP_X_FORWARDED_PROTO} ^http$
RewriteRule ^(.*)$ https://www.samplesite.net%{REQUEST_URI} [L,R=302]