Encaminhar para https mantendo a URL intacta / completa

2

Desejo encaminhar todo o tráfego para https. Pode haver subdomínios e subcaminhos na URL que devem permanecer intactos. Exemplo:

http://subdomain.myDomain.me -> https://subdomain.myDomain.me
http://myDomain.me/subpath -> https://myDomain.me/subpath
http://subdomain.myDomain.me/subpath -> https://subdomain.myDomain.me/subpath

Eu tentei os exemplos em este excelente avaliador (link de aqui ) com o seguinte código:

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https:/$1

No avaliador, tudo está bem. O host virtual real se parece com isso:

<virtualHost *:80>
    ServerName myDomain.me
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https:/$1
</VirtualHost>

Ao tentar acessar o site real, isso acontece:

http://subdomain.myDomain.me -> http://subdomain.myDomain.me # fail - no https
http://myDomain.me/subpath -> https://myDomain.mesubpath # fail - subpath appended to top-level domain
http://subdomain.myDomain.me/subpath -> https://subdomain.myDomain.me/subpath # success

O que há de errado com essa reescrita?

    
por Pascal 05.03.2016 / 23:10

2 respostas

1

A regra correta é a seguinte.

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

No entanto, esse não é o método recomendado para redirecionar solicitações HTTP para HTTPS. O método preferido é usar um redirecionamento em seu confi do Apache para apontar para o site SSL ativado.

Você pode saber mais sobre o método preferido em o wiki do Apache Httpd .

    
por 05.03.2016 / 23:44
1
RewriteEngine On
#RewriteCond %{HTTPS} off # you can skip this if you want to redirect everything
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC]

Se isso não funcionar, tente:

RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L,NC]

Não se esqueça de enviar o sinalizador R=301 para tornar o redirecionamento permanente.

    
por 06.03.2016 / 01:12