我需要将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]
    

    但是,如果有人输入www.example.com,它仍会使用http版本而不是https。

    我真正需要的是RewriteCond正则表达式以完全匹配,并且仅匹配“example.com”和“www.example.com”

    谢谢

    最佳答案

    您可以使用以下规则在一次重定向中将非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]
    

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

    关于.htaccess - 如何使用htaccess将www和非www重定向到特定域的https,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37109618/

    10-16 23:50