Como redirecionar URL com HTTP para HTTPS corretamente

Para forçar o tráfego do seu site a usar o protocolo HTTPS, é necessário editar os códigos no arquivo .htaccess.

Como redirecionar URL com HTTP para HTTPS corretamente
Redirecionar URL com HTTP para HTTPS via .htaccess

Antes de seguir os passos abaixo, você precisa ter um certificado SSL instalado na sua conta de hospedagem para o domínio do seu site.

Após instalar o certificado SSL em seu site, você poderá redirecionar todos os links do seu site para HTTPS editando o arquivo .htaccess.

Use uma das seguintes opções .htaccess editando o arquivo .htaccess em seu diretório principal.

Opção 1: Redirecionando para HTTPS

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Opção 2: Redirecionando para HTTPS (Sem redirecionamento 301)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Opção 3: Redirecionando para HTTPS (Um método diferente)

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.examplo.com.br/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

**Não se esqueça de substituir “exemplo.com.br” pelo seu domínio.

Opção 4: Redirecionando URLs sem www para URLs com www

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Opção 5: Redirecionando URLs com www para URLs sem www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Opção 6: Redirecionando para HTTPS com www

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Opção 7: Redirecionando para HTTPS sem www

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Se o seu servidor redirecionar automaticamente para HTTPS, você não precisará atualizar seu arquivo .htaccess.