基于文件夹和域的SSL重定向

时间:2013-05-16 13:58:37

标签: apache .htaccess ssl https

这看起来很简单,但我遇到了这样的麻烦。我有一个开发服务器和一个实时服务器,我通过git,从开发服务器推送到实时服务器,一旦测试更改等...

我在htaccess文件中使用以下内容:

RewriteCond %{HTTPS} !=on
RewriteRule ^(members/.*)$ https://live-domain.com/members/$1 [R=301,L]

这对于实时域名有效。但现在当我转到 dev-domain.com/members 时,它会重定向到 https://live-domain.com

我需要的是只有在调用成员文件夹并且它是live-comain.com时才转到https。所以我尝试了以下和以下的变体:

RewriteCond %{HTTP_HOST} ^(.*\.)?live-domain\.com
RewriteCond %{HTTPS} !=on
RewriteRule ^(members/.*)$ https://live-domain.com/members/$1 [R=301,L]

但上面的内容只是在 live-domain.com 上有无限循环错误消息,而/ members / members / members / members / members / etc ...在url < / p>

有人可以指出我正确的方向,所以https重写只发生在live-domain.com。

由于

1 个答案:

答案 0 :(得分:0)

如果有其他人遇到这个问题,我的决议如下。

存在各种问题,主要原因是我没有意识到Amazon AWS(我的实时网站所在地)没有将http或https信息从负载均衡器(SSL证书所在的位置)传递到EC2实例(其中我的剧本是)。

您需要使用HTTP:X-Forwarded-Proto来检测它。完整的htaccess如下:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_HOST} ^(.*\.)?live-domain\.com
RewriteCond %{REQUEST_URI} members 
RewriteRule ^(.*)$ https://live-domain.com/members/$1 [R,L]

以上是在members目录中的htaccess文件中。

希望它有所帮助。