【发布时间】: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