Je veux une règle de réécriture qui redirige tout vers https://
AND www
.
Par exemple, http://example.com
devrait allerhttps://www.example.com
Voici ce que j'ai:
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
Volonté
la source
la source
http://example.com
(c'est-à-dire HTTP et non www), car il redirigera d'abord vers HTTPS sur le même hôte (c'est-à-dire sanswww
), puis redirigera vers enwww
tant que deuxième redirection. Vous pouvez corriger cela en inversant simplement ces deux règles.https://
redirection correcte , surtout si vous utilisez HSTS. De cette façon, votre préférence HSTS peut être stockée par le navigateur pour vos domaines et les demandes suivantes seront toujours par défauthttps://
Vos conditions sont implicitement ET et votre deuxième condition sera toujours vraie (sauf si vous avez d'autres domaines), donc vos règles actuelles ne redirigeront que le trafic non SSL.
Vous devez
OR
respecter les conditions et annuler lawww
(deuxième) condition:Si le
SERVER_PORT
n'est pas 443 (c.-à-d. N'est pas HTTPS) ou que l'hôte ne commence pas parwww.
(c.-à-d. Que vous accédez au domaine nu), redirigez vers l'URL canonique.Cependant, le fait que cela soit redirigé
https://example.com
vershttps://www.example.com
dépendra de votre certificat de sécurité. (Votre site doit être accessible par www et non-www via SSL pour que la redirection .htaccess se déclenche.)la source
Cela utilisera à la fois pour www ou non-www Si vous essayez d'ouvrir un lien avec www, puis redirigez l'URL vers https avec www
ou Si vous essayez d'ouvrir un lien avec non-www, redirigez l'URL vers https avec non-www
la source
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
parRewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [R=301,L]