Redirect www. * URLs no IIS

2

Eu preciso encontrar uma maneira fácil e universal de capturar qualquer http://www.sub.example.com de URLs e redirecioná-las para http://sub.example.com (ou seja, remover a www)

Eu preferiria implementar isso uma vez para o servidor e não para cada site, talvez usando o Rewriter do IIS?

    
por userSteve 01.02.2018 / 16:47

1 resposta

1

Você desejará criar uma regra de redirecionamento no Módulo de reconfiguração de URL do IIS da seguinte forma:

URL de correspondência
URL solicitado: Matches the Pattern
Usando: Regex
Padrão: * e Ignore case

Condições
Agrupamento lógico: Match Any
Entrada: {HTTP_HOST}
Tipo: corresponde ao padrão Padrão: ^(www\.)(.*)$

Variáveis do servidor Deixe em branco.

Ação Tipo de ação: Redirect
URL de redirecionamento: https://{C:2}{PATH_INFO}
Anexar string de consulta: checked Tipo de redirecionamento: Permanent (301)

Aplique a regra e execute IISReset.

Como alternativa, após instalar o módulo, você pode modificar o web.config da seguinte forma:

<rewrite>
    <rules>
        <rule name="Strip www" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
            <match url="*" negate="false" />
            <conditions logicalGrouping="MatchAny">
                <add input=""{HTTP_HOST}" pattern="^(www\.)(.*)$" />
            </conditions>
            <action type="Redirect" url="https://{C:2}{PATH_INFO}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

Esta regra destina-se a verificar qualquer URL (*), encontrar uma instância de "www". (insensitivo a maiúsculas e minúsculas por padrão) em {HTTP_HOST} e, em seguida, redirecionar para a segunda parte do nome do host canônico {C: 2} com o restante do caminho anexado ao final {PATH_INFO}. Esta regra pode falhar se houvesse uma solicitação para algo como http://bad.www.example.com/some/page.html , já que retornaria https://www.example.com/some/page.html , mas deveria funcionar na maioria dos casos.

    
por 02.02.2018 / 19:34

Tags