0

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

2 回答 2

1

好的,GeoTrust 的某个人向我们解释了它为什么不起作用:

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

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

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

希望有帮助!

于 2013-06-10T09:03:57.227 回答
0

尝试

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

RewriteCond %{HTTP_HOST} ^www\.firstdomain\.com [NC,OR]
于 2013-06-07T14:55:34.923 回答