这看起来很简单,但我遇到了这样的麻烦。我有一个开发服务器和一个实时服务器,我通过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。
由于
答案 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文件中。
希望它有所帮助。