Se você estiver em IIS 7 e em R2 aqui é um guia que funciona eo mais "limpa"
Ujwal Parker
Respostas:
177
Eu acho que a maneira mais limpa é como descrito aqui no IIS-aid.com . É apenas web.config e, portanto, se você mudar de servidor, não precisará se lembrar de todas as etapas que você seguiu com a página de erro personalizada 403.4 ou outras permissões especiais, apenas funcionará.
<configuration><system.webServer><rewrite><rules><rulename="HTTP to HTTPS redirect"stopProcessing="true"><matchurl="(.*)"/><conditions><addinput="{HTTPS}"pattern="off"ignoreCase="true"/></conditions><actiontype="Redirect"redirectType="Permanent"url="https://{HTTP_HOST}/{R:1}"/></rule></rules></rewrite></system.webServer></configuration>
Isso funcionou para mim com a ressalva de que eu tive que modificar o URL de redirecionamento para https: // {HTTP_HOST} {REQUEST_URI}
Andrew S
6
Isso também funcionou para mim. Eu tive que adicionar o aplicativo em que estava executando em ... localhost / app1 => http: // {HTTP_HOST} / app1 / {R: 1} #
RealSollyM
15
Para quem ainda não possui uma seção de reescrita, coloque as regras nas seguintes seções do web.config: <system.webServer><rewrite> <rules> ... </rules> </rewrite> </ system .webServer>
raider33
16
verifique se o Microsoft URL Rewrite Module está instalado no servidor IIS
Nas páginas de erro -> no erro 403.4 -> redirecionar para o site HTTPS
Em Páginas de erro -> Editar configurações dos recursos ... -> Definir erros detalhados para solicitações locais e páginas de erro personalizadas para solicitação remota
O benefício é que ele não requer linhas extras de código. A desvantagem é que ele o redireciona para um URL absoluto.
funciona perfeitamente (no IIS 8.5 / 2012 R2). e não mexer com o web.config
Schmendrick
Você poderia dar um exemplo dessa desvantagem? Em que circunstâncias isso aconteceria e por que isso é negativo? Se você pudesse adicioná-lo à sua resposta, seria ótimo. Muito obrigado!
Marcos Dimitrio
2
@MarcosDimitrio Não tenho certeza, pois era há muito tempo. mas acredito que quando eu quis dizer que ele o redirecionava para um URL absoluto, eu quis dizer um "URL base". Por exemplo, "http": //mywebsite.com/hellokitty seria redirecionado para "https": //mywebsite.com, perdendo assim algumas informações do caminho, isso quebraria todos os links existentes com informações adicionais do caminho.
ColacX
5
Uma maneira limpa altera apenas o esquema de URL de http -> https e deixa todo o resto equivalente. Deve estar do lado do servidor para que não haja problemas no navegador.
O JPPinto.com possui instruções passo a passo sobre como isso é feito, exceto pelo uso de javascript (HttpRedirect.htm) em vez de um redirecionamento do servidor. Por alguma razão, não consegui que o IE execute o javascript se você tiver 'Mostrar mensagens de erro HTTP amigáveis' ativadas, o que está ativado por padrão. Outra coisa com o script é que o redirecionamento para o caminho não funcionou nem no FF ou no Chrome. O script sempre redireciona para o root. (Talvez eu tenha perdido algo, porque deve redirecionar para o caminho.)
Por esses motivos, usei uma página ASP para o redirecionamento. A desvantagem é, obviamente, que isso requer que o ASP clássico seja ativado no servidor.
Eu tive alguns problemas ao usar esse método com o IIS7. Na maioria das vezes, a interface do usuário é problemática, já que o IIS7 facilita muito a perda de algo.
Primeiro, você precisa instalar o ASP como um recurso de função de servidor da web.
Segundo, o uso de um diretório virtual não funcionou conforme o esperado no IIS7 e não tentei depurar isso. Em vez disso, coloquei o arquivo na pasta raiz do site e usei o url '/SSLRedirect.asp' na página de erro 403.4 para fazer referência a ele.
Por fim, a parte mais complicada, você NÃO deve aplicar o SSL para SSLRedirect.asp . Caso contrário, você receberá um erro 403.4. Para fazer isso, escolha o arquivo no IIS7 'Visualização de Conteúdo' e alterne para 'Visualização de Recursos' para poder editar as configurações de SSL do arquivo único e desativar a caixa de seleção 'Exigir SSL'.
O gerenciador do IIS deve mostrar o nome do arquivo no cabeçalho.
As instruções vinculadas no JPPinto.com foram atualizadas para destacar que isso não funciona no IIS 7.5 ou R2. Eles dizem que você receberá uma violação de bloqueio devido a alterações na segurança nas versões mais recentes do IIS. Eles sugerem o uso do método URL Rewrite 2.0 (abordagem semelhante à resposta de @toxaq).
Eu posso facilmente contornar esse redirecionamento colocando "localhost" em algum lugar no URI, por exemplo, a string de consulta yourdomain.com?localhost=true Eu sugiro verificar a propriedade Request.Url.Host
Aidy J
0
Eu uso asp clássico (intranet) e em páginas que exigem login, o arquivo de inclusão de logon faz o redirecionamento:
if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then
Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if
Obviamente, isso não inclui dados GET ou POST. Portanto, na verdade, é um redirecionamento limpo para sua página segura.
Respostas:
Eu acho que a maneira mais limpa é como descrito aqui no IIS-aid.com . É apenas web.config e, portanto, se você mudar de servidor, não precisará se lembrar de todas as etapas que você seguiu com a página de erro personalizada 403.4 ou outras permissões especiais, apenas funcionará.
fonte
A solução mais fácil e limpa que encontrei foi
Em Configurações SSL -> exigir SSL
Nas páginas de erro -> no erro 403.4 -> redirecionar para o site HTTPS
Em Páginas de erro -> Editar configurações dos recursos ... -> Definir erros detalhados para solicitações locais e páginas de erro personalizadas para solicitação remota
O benefício é que ele não requer linhas extras de código. A desvantagem é que ele o redireciona para um URL absoluto.
fonte
Uma maneira limpa altera apenas o esquema de URL de http -> https e deixa todo o resto equivalente. Deve estar do lado do servidor para que não haja problemas no navegador.
O JPPinto.com possui instruções passo a passo sobre como isso é feito, exceto pelo uso de javascript (HttpRedirect.htm) em vez de um redirecionamento do servidor. Por alguma razão, não consegui que o IE execute o javascript se você tiver 'Mostrar mensagens de erro HTTP amigáveis' ativadas, o que está ativado por padrão. Outra coisa com o script é que o redirecionamento para o caminho não funcionou nem no FF ou no Chrome. O script sempre redireciona para o root. (Talvez eu tenha perdido algo, porque deve redirecionar para o caminho.)
Por esses motivos, usei uma página ASP para o redirecionamento. A desvantagem é, obviamente, que isso requer que o ASP clássico seja ativado no servidor.
OpsanBlog possui um script ASP e instruções que funcionam bem com o IIS6.
Eu tive alguns problemas ao usar esse método com o IIS7. Na maioria das vezes, a interface do usuário é problemática, já que o IIS7 facilita muito a perda de algo.
O gerenciador do IIS deve mostrar o nome do arquivo no cabeçalho.
fonte
Global.asax
fonte
Eu uso asp clássico (intranet) e em páginas que exigem login, o arquivo de inclusão de logon faz o redirecionamento:
Obviamente, isso não inclui dados GET ou POST. Portanto, na verdade, é um redirecionamento limpo para sua página segura.
fonte
Eu acho que por 'limpa' você quer dizer com um redirecionamento 300. Config para um monte de servidores e idiomas aqui .
fonte