IIS URL regravar HTTP para HTTPS com porta

7

Meu site tem duas ligações: 1000 e 1443 (a porta 80/443 está em uso por outro site na mesma instância do IIS) . A porta 1000 é HTTP , a porta 1443 é HTTPS . O que eu quero fazer é redirecionar qualquer solicitação recebida usando "htt p: // server: 1000" para "https://server:1443" . Estou brincando com o módulo de reescrita do IIS 7, mas estou batendo com a cabeça contra a parede. Qualquer insight é apreciado!

BTW a configuração de reescrita abaixo funciona muito bem com um site que tem uma ligação HTTP na porta 80 e ligação HTTPS na porta 443, mas não funciona com as minhas portas.

P.S. Meus URLs intencionalmente têm espaços porque o "mecanismo de prevenção de spam" entrou em ação. Por alguma razão, o login do Google não funciona mais, então tive que criar uma conta OpenID (Nenhum Script poderia ser o culpado). Não sei como obter XML para exibir bem, então adicionei espaços após os colchetes de abertura.

< ?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>
    
por Andy Arismendi 19.01.2011 / 04:07

3 respostas

6

            <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>

Isso resolveu meu problema.

    
por 26.01.2011 / 00:28
6

Mesmo que a pergunta tenha sido respondida há algum tempo, esta é a regra que usei.

<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>
    
por 17.08.2012 / 11:22
1

Tente mudar isso:

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

para isso:

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