Ich möchte eine Umschreiberegel, die alles zu https://
AND umleitet www
.
Zum Beispiel http://example.com
sollte gehenhttps://www.example.com
Das habe ich:
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
Wille
quelle
quelle
http://example.com
(dh HTTP und Nicht-WWW), da zuerst auf demselben Host (dh ohnewww
) zu HTTPS umgeleitet und dannwww
als zweite Umleitung umgeleitet wird. Sie können dies korrigieren, indem Sie diese beiden Regeln einfach umkehren.https://
Umleitung wünschen , insbesondere wenn Sie HSTS verwenden. Auf diese Weise kann Ihre HSTS-Präferenz vom Browser sowohl für Ihre Domains gespeichert werden, und nachfolgende Anforderungen werden immer standardmäßighttps://
Ihre Bedingungen sind implizit UND-verknüpft und Ihre zweite Bedingung ist immer erfüllt (es sei denn, Sie haben andere Domänen), sodass Ihre aktuellen Regeln nur Nicht-SSL-Verkehr umleiten.
Sie müssen
OR
die Bedingungen erfüllen und diewww
(zweite) Bedingung negieren :Wenn das
SERVER_PORT
nicht 443 ist (dh nicht HTTPS ist) oder der Host nicht mit beginntwww.
(dh Sie greifen auf die nackte Domain zu), leiten Sie zur kanonischen URL weiter.Ob dies jedoch umleiten
https://example.com
zuhttps://www.example.com
auf Sicherheitszertifikat abhängen. (Auf Ihre Site muss sowohl über www als auch über www über SSL zugegriffen werden können, damit die .htaccess-Umleitung ausgelöst wird.)quelle
Dies gilt sowohl für www als auch für nicht www. Wenn Sie versuchen, einen Link mit www zu öffnen, leiten Sie die URL mit www an https weiter
oder Wenn Sie versuchen, einen Link mit Nicht-WWW zu öffnen, leiten Sie die URL mit Nicht-WWW zu https um
quelle
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
durchRewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [R=301,L]