Quero uma regra de reescrita que redirecione tudo para https://
AND www
.
Por exemplo, http://example.com
deveria estar indo parahttps://www.example.com
Isto é o que eu tenho:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ "https\:\/\/www\.example\.com\/$1" [R=301,L]
http://example.com
(por exemplo, HTTP e não www), pois ele primeiro redireciona para HTTPS no mesmo host (por exemplo, semwww
) e, em seguida, redireciona parawww
um segundo redirecionamento. Você pode corrigir isso simplesmente revertendo essas duas regras.https://
redirecionamento adequado , especialmente se você usar HSTS. Desta forma, o HSTS preferência podem ser armazenados pelo navegador para ambos os seus domínios e pedidos subseqüentes serão sempre padrão parahttps://
Suas condições são implicitamente AND 'e sua segunda condição sempre será verdadeira (a menos que você tenha outros domínios), portanto, suas regras atuais redirecionarão apenas o tráfego não SSL.
Você precisa
OR
das condições e nega awww
(segunda) condição:Se
SERVER_PORT
não for 443 (por exemplo, não é HTTPS) ou o host não iniciarwww.
(por exemplo, você está acessando o domínio básico), redirecione para o URL canônico.No entanto, se isso vai redirecionar
https://example.com
ahttps://www.example.com
dependerá do seu certificado de segurança. (Seu site precisa estar acessível por www e não www sobre SSL para que o redirecionamento .htaccess seja acionado.)fonte
Isso será usado para www ou não www. Se você tentar abrir um link com www, o URL redirecionará para https com www
ou Se você tentar abrir um link com não www, redirecione o URL para https com não www
fonte
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
porRewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [R=301,L]