Apache 如何在一次跳转中将所有请求重定向到https和非www?
我想在主/主页和其他子页面的一次跳转中将所有请求重定向到https和非www。 我正在使用以下htaccess 但是我得到了如下的重定向 我想要这样:Apache 如何在一次跳转中将所有请求重定向到https和非www?,apache,.htaccess,Apache,.htaccess,我想在主/主页和其他子页面的一次跳转中将所有请求重定向到https和非www。 我正在使用以下htaccess 但是我得到了如下的重定向 我想要这样: http://mytesting.com > https://mytesting.com http://www.mytesting.com > https://mytesting.com http://mytesting.com/faq > https://mytesting.com/fa
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
您可以在一个规则中对两个重定向使用此规则:
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]
以下是对该规则的解释:
:如果主机名以RewriteCond%{HTTP\u HOST}^www\。[NC,或]
www.
:忽略大小写匹配和[NC,OR]
或
的下一个条件
上:RewriteCond%{HTTPS}!在
未打开HTTPS
:此条件将始终匹配,因为RewriteCond%{HTTP\u HOST}^(?:www\)?(.+)$[NC]
在此处是可选匹配。它用于通过使用捕获组#1中的www.
模式捕获(.+)
,而无需启动HTTP\u主机的子字符串
(稍后将作为www.
反向引用)。请注意,%1
是一个非捕获组(?:…)
:重写规则^https://%1%{REQUEST_URI}[R=301,L,NE]
将始终匹配。此规则将重定向到具有^
code的R=301
。其中,https://%1%{REQUEST_URI}
是来自%1
的捕获组#1的反向引用,如上所述李>RewriteCond
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]