Правило Web.config для перезаписи url всегда перенаправляется с https на http

У меня проблема с web.config и принудительным использованием SSL. У меня есть правило переписывать url, потому что PHP-сайт Nette размещен на хосте.

<rule name="Rewrite Admin" stopProcessing="true">
                  <match url="^admin/(.*)" ignoreCase="true"/>
                  <conditions logicalGrouping="MatchAll">
                      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />    
                  </conditions>
                  <action type="Rewrite" url="/admin/index.php" />
               </rule>

Если я использую https в URL-адресе, запрос всегда перенаправляется на http. (https://example.com/admin -> example.com/admin). Когда я использую приведенное ниже правило SSL для всех запросов, возникает ошибка (слишком много перенаправлений). (есть 2 правила в web.config)

<rule name="Redirect to https">
        <match url="(.*)"/>
        <conditions>
          <add input="{HTTPS}" pattern="Off"/>
          <add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
            <add input="{REQUEST_URI}" pattern="^/(node)" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/(cbre)" negate="true" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
      </rule>

Как заставить ssl для типа действия "перезаписать"?

Спасибо за помощь


person Marek Ostrý    schedule 07.06.2017    source источник


Ответы (1)


Я взял вашу rule конфигурацию, но не могу воспроизвести проблему. Итак, чтобы перенаправить HTTP-трафик на HTTPS, я бы порекомендовал вам установить расширение сайта под названием Redirect HTTP to HTTPS через Kudu.

  1. Откройте браузер и посетите:

    https://<your-app-name>.scm.azurewebsites.net/SiteExtensions/#gallery
    
  2. В поле поиска введите «перенаправление», затем нажмите кнопку Поиск.

    введите описание изображения здесь

  3. Выберите Redirect HTTP to HTTPS и нажмите кнопку ДОБАВИТЬ.

  4. Когда откроется диалоговое окно, нажмите кнопку Установить.
  5. Чтобы сделать его доступным, нажмите кнопку Перезапустить сайт.
person Aaron Chen    schedule 08.06.2017
comment
Это решение вызвало у меня ту же проблему. Слишком много перенаправлений. Проблема в том, что когда вы используете правило для перезаписи, всегда возвращается http (даже если https). - person Marek Ostrý; 08.06.2017
comment
Вы удалили Redirect to https правило из файла web.config? - person Aaron Chen; 08.06.2017
comment
да. Я удалил. У меня на одном хостинге 3 типа приложений. Angular приложение в корне, PHP сеть в двух папках. Может это быть вызвано перенаправлением Нетте? - person Marek Ostrý; 08.06.2017
comment
Я не знаком с Нетте. Однако я протестировал ваш файл web.config, и он отлично работал на моем сайте. - person Aaron Chen; 08.06.2017
comment
Спасибо. Это было вызвано Нетте. В роутере необходимо использовать флаги. $ flags = Route :: SECURED; $ router [] = новый маршрут ('‹presenter› / ‹action› [/ ‹id›]', 'Магазины: по умолчанию', $ flags); - person Marek Ostrý; 08.06.2017