重写为www和https,多个域并不总是有效

时间:2013-06-07 14:47:09

标签: .htaccess redirect mod-rewrite ssl https

我们的平台可以通过多个域访问(每个语言/品牌一个)。对于所有域名,我们强制 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

2 个答案:

答案 0 :(得分:1)

好的,来自GeoTrust的人开悟了我们为什么不工作的原因:

我们正在使用www.firstdomain.com上发布的SAN证书。 www.seconddomain.com,www.thirddomain.com等是其替代领域。

作为免费奖励,他们会自动在此证书中提供firstdomain.com(不含www) - 仅适用于此主域名,而非备用域名。

这就是https://firstdomain.com重定向的原因,而不是其他的重定向。

希望有所帮助!

答案 1 :(得分:0)

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

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