Apache 使用htaccess重定向到https始终与www优化

Apache 使用htaccess重定向到https始终与www优化,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我需要将所有内容重定向到我的域以使用,下面是我当前使用的.htaccess: RewriteCond %{HTTPS} off # First rewrite to HTTPS: # Don't put www. here. If it is already there it will be included, if not # the subsequent rule will catch it. RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_

我需要将所有内容重定向到我的域以使用,下面是我当前使用的.htaccess:

RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
它正在工作,但它使2个重定向到浏览器一个如果错过了www和第二个如果错过了安全,这当然是缓慢的,可能是坏的

我想要或我的问题是,这可以简化为一个重定向规则,使其在一个规则中同时添加www和https

此在线测试工具显示2个重定向:


对这段代码的任何好的优化。

您可以只使用一条规则

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
此处不需要非www到www重定向,因为您希望将两个版本重定向到


在测试之前,请清除浏览器的缓存。您只能使用一条规则

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
此处不需要非www到www重定向,因为您希望将两个版本重定向到

测试前请清除浏览器缓存。您可以使用:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
2条规则,但不能超过一条重定向

您可以使用:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

2个规则,但决不能超过一个重定向

我不希望为域硬编码,我需要使用%{HTTP_HOST}和%{REQUEST_URI}更通用,所以我不需要为每个域编辑它。好吧,单次重定向是不可能的{HTTP_HOST}可以是www或非www,具体取决于您键入的主机名。如果没有www,这也不能处理https,它应该重定向到
https://www
我不希望为域进行硬编码,我需要使用%{HTTP\u HOST}和%{REQUEST\u URI}更通用,因此我不需要为每个域编辑它。好的,单重定向是不可能的。%{HTTP_HOST}可以是www或非www,具体取决于您键入的主机名。如果没有www,这也不能处理https,它应该重定向到
https://www
没有www:
https://domain.com/
应重定向到
https://www.domain.com/
。我的第一条规则就是这样做。你以前添加过其他规则吗?你应该把这些规则放在第一位如果你是正确的,我忘了在第一条规则之前关闭
RewriteCond%{HTTPS}
。我把它取下来,按预期工作。接受。如果没有www:
https://domain.com/
应重定向到
https://www.domain.com/
。我的第一条规则就是这样做。你以前添加过其他规则吗?你应该把这些规则放在第一位如果你是正确的,我忘了在第一条规则之前关闭
RewriteCond%{HTTPS}
。我把它取下来,按预期工作。认可的。