Wie kann ich alle Anfragen in einem Sprung an https und Nicht-www umleiten?
Ich möchte alle Anfragen in einem Sprung für Haupt- / Homepage und andere Unterseiten an https und Nicht-www umleiten. Ich benutze den folgenden htaccess. Quelle
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^mytesting\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.mytesting\.com$
RewriteRule .* https://www.mytesting.com%{REQUEST_URI} [R=301,L]
Aber ich habe die folgende Umleitung erhalten
Ich will so:
http://mytesting.com > https://mytesting.com
http://www.mytesting.com > https://mytesting.com
http://mytesting.com/faq > https://mytesting.com/faq
https://mytesting.com > https://mytesting.com
http://www.mytesting.com > https://mytesting.com
http://www.mytesting.com/faq > https://mytesting.com/faq
https://mytesting.com/faq > https://mytesting.com/faq
Antworten
2 anubhava
Sie können diese Regel für beide Weiterleitungen in einer Regel verwenden:
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]
Hier ist die Erklärung dieser Regel:
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
: wennHOST_NAME
beginnt mitwww.
[NC,OR]
: Fallübereinstimmung undOR
nächste Bedingung ignorierenRewriteCond %{HTTPS} !on
:HTTPS
ist nicht eingeschaltetRewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
: Diese Bedingung stimmt immer überein, dawww.
hier eine optionale Übereinstimmung vorliegt . Es wird verwendet, um Teilzeichenfolgen von zu erfassen,HTTP_HOST
ohnewww.
mit dem(.+)
Muster in Erfassungsgruppe 1 zu beginnen (auf das später zurück verwiesen wird%1
). Beachten Sie, dass dies(?:..)
eine nicht erfassende Gruppe ist.RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]
:^
wird immer übereinstimmen. Diese Regel wirdhttps://%1%{REQUEST_URI}
mitR=301
Code umgeleitet . Woher%1
stammt die Rückreferenz der Erfassungsgruppe Nr. 1RewriteCond
, wie oben erwähnt?