【问题标题】:Rewrite to www AND https for multiple domains not always working为多个域重写 www 和 https 并不总是有效
【发布时间】:2013-06-03 22:17:33
【问题描述】:

我们的平台可以通过多个域访问(每种语言/品牌一个)。对于所有域,我们强制使用 www.https://。我们使用一个包含以下代码的 .htaccess 文件来做到这一点:

RewriteEngine On
RewriteBase /

# FIRST WE REDIRECT TO www. IF NOT ALREADY THE CASE
RewriteCond %{HTTP_HOST} ^firstdomain\.com [OR,NC]
RewriteCond %{HTTP_HOST} ^seconddomain\.com [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# THEN, WE REDIRECT TO https:// IF NOT ALREADY THE CASE
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_HOST} ^www\.firstdomain\.com [OR,NC]
RewriteCond %{HTTP_HOST} ^www\.seconddomain\.com [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

一切正常,除了一种情况:

当直接调用https://seconddomain.com(不带www但带SSL)时,我们会收到证书错误(因为域没有首先重定向到www - 我们只有www.*的证书)。

不过,奇怪的是,这个问题并没有出现在列表的第一个域上:

https://firstdomain.com -> 被重定向到https://www.firstdomain.com(没有错误,完美!)

为什么这仅适用于第一个域而不适用于后续域?

感谢您的帮助!

总结:

WORKS FOR ALL DOMAINS
http://etc -> https://www.etc
http://www.etc -> https://www.etc

WORKS ONLY FOR THE FIRST DOMAIN
https://etc -> https://www.etc

【问题讨论】:

  • 我们正在使用多域证书 (geotrust.com/ssl/ssl-certificates-san-uc)。它是在“firstdomain.com”上发布的。这可能是它仅适用于 firstdomain.com 的原因吗?我们已联系 GeoTrust,正在等待回复。

标签: .htaccess redirect mod-rewrite ssl https


【解决方案1】:

好的,GeoTrust 的某个人告诉了我们为什么它不起作用:

我们使用的是在 www.firstdomain.com 上颁发的 SAN 证书。 www.seconddomain.com、www.thirddomain.com 等是其备用域。

作为免费奖励,他们会在此证书中自动提供 firstdomain.com(不带 www)——但仅适用于这个主域,而不是备用域。

这就是为什么来自https://firstdomain.com 的重定向有效而不适用于其他重定向的原因。

希望有帮助!

【讨论】:

    【解决方案2】:

    试试

    RewriteCond %{HTTP_HOST} ^firstdomain\.com [NC,OR]
    

    RewriteCond %{HTTP_HOST} ^www\.firstdomain\.com [NC,OR]
    

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 1970-01-01
      • 2017-12-04
      • 2014-12-16
      • 2015-01-10
      • 2021-07-31
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      相关资源
      最近更新 更多