Para aumentar a resposta do LazyOne, aqui está uma versão anotada da resposta.
<rewrite>
<rules>
<clear />
<rule name="Redirect all requests to https" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action
type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}"
redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
Limpe todas as outras regras que já possam ter sido definidas neste servidor. Crie uma nova regra, denominada "Redirecionar todas as solicitações para https". Depois de processar esta regra, não processe mais nenhuma regra! Corresponda a todos os URLs recebidos. Em seguida, verifique se todas essas outras condições são verdadeiras: HTTPS está desativado. Bem, isso é apenas uma condição (mas verifique se é verdade). Se estiver, envie um redirecionamento 301 permanente de volta ao cliente em http://www.foobar.com/whatever?else=the#url-contains
. Não adicione a string de consulta no final disso, porque duplicaria a string de consulta!
É isso que as propriedades, atributos e alguns dos valores significam.
- clear remove todas as regras do servidor que poderíamos herdar.
- regra define uma regra.
- nomeie um nome arbitrário (embora único) para a regra.
- stopProcessing: encaminhar a solicitação imediatamente para o pipeline de solicitações do IIS ou primeiro para processar regras adicionais.
- corresponde a quando executar esta regra.
- url de um padrão no qual avaliar a URL
- condiciona condições adicionais sobre quando executar esta regra; as condições são processadas apenas se houver uma primeira correspondência.
- logicGrouping se todas as condições devem ser verdadeiras (
MatchAll
) ou se alguma delas deve ser verdadeira ( MatchAny
); semelhante a AND vs OR.
- add adiciona uma condição que deve ser atendida.
- insira a entrada que uma condição está avaliando; entrada pode ser variável do servidor.
- padrão do padrão contra o qual avaliar a entrada.
- ignoreCase se a capitalização é importante ou não.
- ação o que fazer se o
match
e sua conditions
são todas verdadeiras.
- O tipo geralmente pode ser
redirect
(do lado do cliente) ou rewrite
(do lado do servidor).
- url o que produzir como resultado desta regra; nesse caso, concatene
https://
com duas variáveis de servidor.
- redirectType que redirecionamento HTTP usar; este é um permanente 301.
- appendQueryString se deseja adicionar a sequência de consultas no final da resultante
url
ou não; neste caso, estamos definindo-o como false, porque o {REQUEST_URI}
já o inclui.
As variáveis do servidor são
{HTTPS}
qual é OFF
ou ON
.
{HTTP_HOST}
é www.mysite.com
e
{REQUEST_URI}
inclui o restante do URI, por exemplo /home?key=value
- o navegador lida com
#fragment
(veja o comentário do LazyOne).
Consulte também: https://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference