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