.htaccess redirect http para https

Eu tenho uma URL antiga ( www1.test.net ) e gostaria de redirecioná-la para https://www1.test.net
Implementei e instalei nosso certificado SSL no meu site.
Este é o meu arquivo antigo .htaccess :

 RewriteEngine On RewriteRule !\.(js|gif|jpg|png|css|txt)$ public/index.php [L] RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ public/$1 [L] 

Como posso configurar meu arquivo .htaccess para que o redirecionamento automático de URL para https ?
Obrigado!

Atualize 2016

Como esta resposta recebe alguma atenção, eu quero sugerir uma maneira mais recomendada de fazer isso usando Hosts Virtuais: Apache: Redirect SSL

  ServerName mysite.example.com Redirect permanent / https://mysite.example.com/   ServerName mysite.example.com DocumentRoot /usr/local/apache2/htdocs SSLEngine On # etc...  

Resposta antiga, coisa hacky dado que sua porta ssl não está definida para 80, isso vai funcionar:

 RewriteEngine on # force ssl RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 

Note que esta deve ser sua primeira regra de reescrita.

Editar: este código faz o seguinte. O RewriteCond (ition) verifica se o ServerPort da solicitação é 80 (que é a porta http padrão, se você especificou outra porta, teria que ajustar a condição para ela). Nesse caso, combinamos o URL inteiro (.*) E o redirecionamos para um URL https. %{SERVER_NAME} pode ser substituído por um URL específico, mas dessa forma você não precisa alterar o código de outros projetos. %{REQUEST_URI} é a parte da URL depois do TLD (domínio de nível superior), por isso você será redirecionado para o local de onde veio, mas como https.

Eu uso o seguinte para redirect com êxito todas as páginas do meu domínio de http para https:

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Observe que isso será redirecionado usando o redirecionamento 301 'permanently moved' , que ajudará a transferir suas classificações de SEO.

Para redirect usando a alteração 302 'temporarily moved' [R=302,L]

Este é o melhor para www e para https, proxy e não usuários proxy.

 RewriteEngine On ### WWW & HTTPS # ensure www. RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # ensure https RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ### WWW & HTTPS 

Eu forço os https com o seguinte código:

 RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 

Procurando a melhor maneira de redirect, eu encontrei isso (vindo de html5boilerplate):

 # ---------------------------------------------------------------------- # | HTTP Strict Transport Security (HSTS) | # ---------------------------------------------------------------------- # Force client-side SSL redirection. # # If a user types `example.com` in their browser, even if the server # redirects them to the secure version of the website, that still leaves # a window of opportunity (the initial HTTP connection) for an attacker # to downgrade or redirect the request. # # The following header ensures that browser will ONLY connect to your # server via HTTPS, regardless of what the users type in the browser's # address bar. # # (!) Remove the `includeSubDomains` optional directive if the website's # subdomains are not using HTTPS. # # http://www.html5rocks.com/en/tutorials/security/transport-layer-security/ # https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1 # http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx Header set Strict-Transport-Security "max-age=16070400; includeSubDomains" 

Talvez ajude alguém em 2017! 🙂

Nos casos em que a conexão HTTPS / SSL é finalizada no balanceador de carga e todo o tráfego é enviado para instâncias na porta 80, a regra a seguir funciona para redirect o tráfego não seguro.

 RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Assegure-se de que o módulo mod_rewrite esteja carregado.

Eu tive um problema com o redirecionamento também. Eu tentei tudo o que foi proposto no Stackoverflow. O único caso que encontrei sozinho é:

 RewriteEngine on RewriteBase / RewriteCond %{HTTP:SSL} !=1 [NC] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 

Adicione este código no final do seu arquivo .htaccess

 RewriteEngine on RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

Adicionando o seguinte ao topo do .htaccess

 RewriteEngine On RewriteCond %{ENV:HTTPS} !=on RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]