如何使用htaccess将www和非www重定向到特定域的https

nhi*_*iik 6 .htaccess mod-rewrite https redirect

我需要将www和非www重定向到https.我已经在stackoverflow上到处寻找,但找不到我正在寻找的东西.

规则是:

  • example.com和www.example.com以及https://example.com 必须重定向到https://www.example.com
  • 必须与域和扩展example.com匹配.它不能是一张外卡,它也匹配abc.com或123.com或example.net或其他任何东西
  • 必须仅匹配www子域.它不能是与sub.example.com或thisisademo.example.com匹配的外卡

我目前有:

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

但是,如果有人进入www.example.com,它仍会转到http版本而不是https.

我认为我真正需要的是RewriteCond正则表达式以完全匹配,只有"example.com"和"www.example.com"

谢谢

sta*_*een 7

您可以使用以下规则在一次重定向中将非www或www 重定向到https:// www

#redirect http non-www to https://www
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
#redirect https non-www to www
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

在测试此规则之前清除浏览器的缓存.