Redirecionar HTTP para HTTPS no Apache e Nginx
Você adquiriu um certificado SSL pro seu site, mas agora se deparou com a tarefa de redirecionar os acessos HTTP para HTTPS.
Felizmente você não precisará editar seus scripts, tanto no Apache, quanto no Nginx a configuração é feita diretamente pelo servidor.
No Apache
No Apache é bem fácil, basta criar um arquivo .htaccess com o conteúdo abaixo no diretório web do seu site.
O melhor é que você não vai precisar editar o conteúdo, é só inserir o conteúdo no arquivo e a mágica será feita ;)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
No Nginx
Tá usando o Nginx (que bacana hein), saiba que no seu caso também tem salvação e também é muito simples, basta alterar a configuração do seu virtual host que atende na porta 80 ou deixar apenas do SSL e criar um novo conforme a configuração abaixo.
A linha responsável pela mágica é a 5.
Não esqueça de trocar o www.meudominio.com pelo seu domínio!
server {
listen 80;
listen [::]:80;
server_name www.dominio.com;
return 301 https://$server_name$request_uri;
}
Importante
Não esqueça de trocar os endereços de imagens, arquivos javascripts e links internos de http para https, caso existam e estejam utilizando o endereço completo, pois mesmo com o certificado pode aparecer que a página contém elementos inseguros.
Se você quer atender requisições pelos dois protocolos pode usar links de protocolos relativo, exemplo:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
Se você tem HTTP e HTTPS no mesmo servidor e quer que a solicitação seja atendida pelo respectivo protocolo do acesso, utilize:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
Desta forma, se o visitante acessar por HTTP ele enviará a requisição via HTTP na porta 80, se acessar por HTTPS ele enviará a requisição para a porta 443.
Comentários