重定向http => https(非www)+ www https =>非www https(没有www的证书)

时间:2015-02-06 09:41:37

标签: .htaccess mod-rewrite

我看过很多关于重写的文章。都好。但没有人涵盖这种确切的情况。所以这是我的问题:希望你能提供帮助。因为我无法让它发挥作用。

  • 我们在domain.com上运行网站(非www)
  • 我们设置了ssl(仅限https)
  • 我们有1张非www版本的证书(不是www版本)

当我们执行所有四个测试用例时,3个可以,1个不是

  1. http://domain.com => https://domain.com =>
  2. http://www.domain.com => https://domain.com =>确定
  3. https://domain.com =>行
  4. https://www.domain.com =>错误。证书警告不安全
  5. 问题:现在为什么4号https://www给我这个错误。我希望第一条规则能够接收并将我们发送到非www版本。我该如何解决这个问题?

    感谢任何帮助; P Sean


    这是我目前的htaccess

    <IfModule mod_rewrite.c>
      RewriteEngine on
      # Redirect www to non-www first 
      # Added based on article http://stackoverflow.com/questions/234723/generic-htaccess-redirect-www-to-non-www
      RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
      RewriteRule ^(.*) https://%1/$1 [R=301,NE,L]
    
      # Then redirect http to https (if necessary)
      RewriteCond %{HTTPS} !=on
      RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
    </IfModule>
    

2 个答案:

答案 0 :(得分:2)

您可以在.htaccess中使用此功能:

<IfModule mod_rewrite.c>
  RewriteEngine on
  # Redirect www to non-www first 
  RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
  RewriteRule ^(.*) https://%1/$1 [R=301,NE,L]

  # Then redirect http to https (if necessary)
  RewriteCond %{HTTPS} off
  RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
</IfModule>

但是,对于证书错误,你无能为力 阅读:Redirecting https://www to https://non-www - without seeing certificate error, possible?

答案 1 :(得分:0)

这不可能仅通过htaccess或nginx conf来解决。

需要证书才能涵盖域名的www和非www版本

通配符证书或多域证书,其中www和非www都包含在一个单独的域中

希望有所帮助