2010-05-25 31 views
1

我对这个问题有困惑。用下面的代码我能够强迫任何非SSL URL SSL,但是当用户(和结果来自谷歌)将用户引导至http://mysite.co.za然后我们打一个问题,因为该URL,然后重写https://mysite.co.za使用.htaccess&mod_rewrite将“www”预先挂载到HTTPS网址

由于事实上,我的证书绑定到www.mysite.co.za它会立即抛出一个安全错误,因为URL中缺少'www'。

有人能指出一种方法,当域名以HTTPS开头而不是HTTP时,将www添加到域名?

非常感谢。

而且目前的代码添加https://开头如下:

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+1

即使使用重定向,您总是会有至少一个警告。这是因为浏览器在服务器到达重定向点之前检查SSL证书 – Gareth 2010-05-25 07:09:03

+1

重定向到www然后重定向到HTTPS。 – 2010-05-25 07:26:56

+0

@Kerry:或直接转到“https:// www.mysite.co.za /”。 – 2010-05-25 11:44:41

回答

1

有人能指出一条生路给WWW添加到域时域与启动HTTPS而不是HTTP ?

所以,你要这样:

  • 如果主机不以www开始:
    • 如果连接是安全的,什么也不做。在这种情况下,无论如何你都已经搞砸了,因为用户已经看到了主机不匹配的警告。
    • 如果连接是不安全的重定向到https://www.% {HTTP_HOST}%{REQUEST_URI}

您当前的规则:

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

这条规则对你失败,因为它增加了WWW不管连接是否安全。另外,它保持http原样(不转发https://)。上述

满足您的要求的规则是

#if the host does not start with www. 
RewriteCond %{HTTP_HOST} !^www\. 
#and the connection is not secure 
RewriteCond %{HTTPS} ="" 
#forward 
RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301] 

L标记是不必要的,因为重定向结束该重写。

+0

之前。感谢Artefacto,这段代码为我清除了一些烟雾,但要清楚我有另一个.htaccess文件存在于非SSL目录中重定向到https没有问题,即使www被遗漏了,它也会预先安排它并将用户发送到安全站点。这个问题仍然存在于安全目录中。 您是否告诉我,如果用户登录https://mysite.co.za,因为浏览器在应用规则之前检查了证书,所以没有多少重写规则可以将www前缀添加到url中?我需要知道是否唯一的解决方案是有两个SSL证书? – SimonDowdles 2010-05-26 06:52:42

+0

如果用户转到https://mysite.co.za,则在用户发送他请求的主机名之前将显示证书,所以apache无法决定要发送的证书。您不仅需要另一个证书,还需要另一个IP地址。但是,您可以获得对mysite.co.za和www.mysite.co.za均有效的证书。大多数当前的Web浏览器都支持这些证书。 – Artefacto 2010-05-26 10:42:11

+0

当然,您可以拥有两个证书,一个用于mysite.co.za,一个用于www.mysite.co.za,理论上这两个证书是两个不同的域名。您不需要拥有一个支持这两个域的通用证书。 – SimonDowdles 2010-05-26 13:00:14

0

这不回答你的问题,但它肯定是解决问题的方式:从Digicert

SSL证书在默认情况下保护双方WWW和同一个域的非WWW变种。我不知道有任何其他主流证书颁发机构会这样做 - Digicert SSL Plus

+0

非常感谢,但客户刚刚在一个月前购买了新的Thawte证书。除了我不确定'Digicert'的声望是什么?还有其他的选择,Thawte提供了一个'Web服务器'证书,您可以在证书上添加一个域名变体,而成本只是新证书的一小部分。这只是一个赚钱的大钱!感谢您的建议,但是,他们不会被忽视。 – SimonDowdles 2010-05-26 07:34:52

+0

够公平的,如果你刚刚购买了新的证书(可能会有宽限期),这很困难。如果你能听取我的意见(我不为他们工作,我只是一个webdev),Digicert是非常出色的。它们在所有网络浏览器中都得到支持,它们只是Thawte/Verisign价格的一小部分,而且它们在世界上得到了最好的支持(我从来没有在现场无法回答的问题实时聊天,他们给我发了一封带有手写信的T恤trans-Atlantic,只是因为我们的一位客户在推特上推荐他们给他)。 – Gareth 2010-05-26 15:14:21

相关问题