Quiero una regla de reescritura que redirija todo a https://
AND www
.
Por ejemplo http://example.com
debería ir ahttps://www.example.com
Esto es lo que tengo:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ "https\:\/\/www\.example\.com\/$1" [R=301,L]
htaccess
apache
https
mod-rewrite
Será
fuente
fuente
http://example.com
(es decir, HTTP y no www), ya que primero redirigirá a HTTPS en el mismo host (es decir, sinwww
) y luego redirigirá awww
una segunda redirección. Puede corregir esto simplemente invirtiendo estas dos reglas.https://
redirección adecuada , especialmente si utiliza HSTS. De esta manera, su HSTS preferencia puede ser almacenada por el navegador tanto para sus dominios y las solicitudes posteriores siempre por defectohttps://
Sus condiciones son implícitamente AND y su segunda condición siempre será verdadera (a menos que tenga otros dominios), por lo que sus reglas actuales solo redirigirán el tráfico que no sea SSL.
Necesita
OR
las condiciones y negar lawww
(segunda) condición:Si
SERVER_PORT
no es 443 (es decir, no es HTTPS) o el host no comienza conwww.
(es decir, está accediendo al dominio desnudo), entonces redirija a la URL canónica.Sin embargo, si esto va a redirigir
https://example.com
ahttps://www.example.com
dependerá de su certificado de seguridad. (Su sitio debe ser accesible tanto por www como por no www a través de SSL para que la redirección .htaccess se active).fuente
Esto se usará tanto para www como para no www. Si intenta abrir un enlace con www, entonces la URL redirige a https con www
o Si intenta abrir un enlace con un sitio que no es www, entonces la URL redirige a https con un sitio que no es www
fuente
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
porRewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [R=301,L]