Назад | Перейти на главную страницу

IIS URL Rewrite HTTP to HTTPS with Port

У моего сайта две привязки: 1000 и 1443. (порт 80/443 используется другим веб-сайтом в том же экземпляре IIS). Порт 1000 - HTTP, порт 1443 - HTTPS. Я хочу перенаправить любой входящий запрос с использованием «htt p: // server: 1000» на "https://server:1443". Я играю с модулем перезаписи IIS 7 2.0, но бьюсь головой об стену. Любое понимание приветствуется!

Кстати, приведенная ниже конфигурация перезаписи отлично работает с сайтом, у которого есть привязка HTTP к порту 80 и привязка HTTPS к порту 443, но она не работает с моими портами.

P.S. В моих URL-адресах намеренно есть пробелы, потому что сработал «механизм предотвращения спама». По какой-то причине вход в систему Google больше не работает, поэтому мне пришлось создать учетную запись OpenID (в этом не могло быть никаких сценариев). Я не уверен, как заставить XML хорошо отображаться, поэтому я добавил пробелы после открывающих скобок.

< ?xml version="1.0" encoding="utf-8"?>
< configuration>
  < system.webServer>
    < rewrite>
      < rules>
        < rule name="HTTP to HTTPS redirect" stopProcessing="true">
          < match url="(.*)" />
          < conditions trackAllCaptures="true">
                        < add input="{HTTPS}" pattern="off" />
          < /conditions>
          < action type="Redirect" redirectType="Found" url="htt ps: // {HTTP_HOST}/{R:1}" />
        < /rule>
      < /rules>
    < /rewrite>
  < /system.webServer>
< /configuration>

Несмотря на то, что на вопрос был дан ответ некоторое время назад, я использовал это правило.

<rule name="Redirect to HTTP on different port" enabled="true" stopProcessing="true">
      <match url="(.*)"/>
      <conditions>
        <add input="{HTTPS}" pattern="ON"/>
      </conditions>
      <!-- Cannot Use {HTTP_HOST} as it contains both the {SERVER_NAME}{SERVER_PORT} -->
      <action type="Redirect" url="http://{SERVER_NAME}:1000{HTTP_URL}" redirectType="Found" appendQueryString="false"/>
    </rule>
            <rule name="HTTP to HTTPS on different SSL Port" enabled="true" stopProcessing="true">
                <match url="(.*)" ignoreCase="true" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                    <add input="{HTTPS}" pattern="off" />
                    <add input="{HTTP_HOST}" pattern="([^/:]*?):[^/]*?" />
                </conditions>
                <action type="Redirect" url="https://{C:1}:1443/{R:0}" appendQueryString="false" />
            </rule>

Это решило мою проблему.

Попробуйте изменить это:

<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}"/>

к этому:

<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}:1443/{R:1}"/>