Redirecionar HTTP para HTTPS no Apache e Nginx

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