Como redirecionar HTTP para HTTPS no mesmo httpd?

10

Aqui está o que eu tenho:

  • CentOS 5.4 (32 bits)
  • Apache httpd instalado (Versão do servidor: Apache / 2.2.11 (Unix))
  • mod_rewrite já apresenta

Pergunta: como redirecionar simples http://site.com para https://site.com que não usa o VirtualHost define?

PS: tentei encontrar respostas posteriores no SF, mas não encontrou uma solução agradável.

Obrigado.

mosg
fonte

Respostas:

9
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Ernest Mueller
fonte
2
RewriteRule ^(.*) https://%{HTTP_HOST}$1faz mais sentido para mim.
Cregox
Não será esse laço infinito em você?
Ernest Mueller
Não, apenas testei. É até como é recomendado nos documentos - veja o final.
Cregox
1
Recebo um loop infinito usando o Apache 2.4.10, implantado no Heroku, quando insiro esses comandos no meu .htaccess. E a variante sugerida por Cawas estranhamente manipula minha URL. Eu tentei um conjunto diferente de comandos: RewriteCond %{HTTP:X-Forwarded-Proto} !httpse RewriteRule ^/?(.*) https://%{SERVER_NAME}%{REQUEST_URI}- que funciona no Chrome e Firefox, mas falha no Safari e Opera. Curiosamente, se eu pegar as três linhas acima e omitir RewriteEngine On, não recebo mais o loop infinito, mas ele ainda falha no Safari e Opera (e funciona no Chrome e Firefox).
Purplejacket
2

Você pode usar mod_alias e Redirect com base no diretório O documento vinculado identifica detalhes adicionais.

<Directory /path/to/site>
   Redirect /service https://foo2.example.com/service 
</Directory>
Warner
fonte