Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php apache2重定向到https://www_Php_.htaccess_Laravel 5_Https_Apache2 - Fatal编程技术网

Php apache2重定向到https://www

Php apache2重定向到https://www,php,.htaccess,laravel-5,https,apache2,Php,.htaccess,Laravel 5,Https,Apache2,我正在尝试向我的laravel网站提出任何重定向到的请求。因为谷歌分析抱怨。经过大量的谷歌搜索和重新研究,我的.htaccess文件如下所示。(我的站点在AWS EC2上运行,在一个弹性负载平衡器后面) 选项-多视图 重新启动发动机 RewriteCond%{HTTP\u USER\u AGENT}^ELB健康检查器 重写cond%{REQUEST_SCHEME}http[或] 重写cond%{HTTP_HOST}^www\。 重写规则^https://www.example.com%{REQ

我正在尝试向我的laravel网站提出任何重定向到的请求。因为谷歌分析抱怨。经过大量的谷歌搜索和重新研究,我的.htaccess文件如下所示。(我的站点在AWS EC2上运行,在一个弹性负载平衡器后面)


选项-多视图
重新启动发动机
RewriteCond%{HTTP\u USER\u AGENT}^ELB健康检查器
重写cond%{REQUEST_SCHEME}http[或]
重写cond%{HTTP_HOST}^www\。
重写规则^https://www.example.com%{REQUEST_URI}[NE,L,R]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
当我保存新的.htaccess文件并重新启动apache时,我在Chrome中得到一个504错误,说www.example.com网站重定向了你太多次。尝试删除你的cookies

当我删除我的cookies或者从匿名访问example.com时,它工作得非常好!但是我如何才能强制用户删除他们以前的cookie,这样他们就不会得到太多的重定向


如果您使用的是AWS,并且您已经制定了安全规则,如简单http中的所有https请求hit ELB和ELB请求实例。因此,ELB可能会将https请求转换为http。请先检查您的安全规则,确定它们不是原因?

我终于找到了解决方案。我使用X-Forwarder-Proto头来检查ELB收到的请求是http还是https。然后我把上面的规则结合起来,就成功了

RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteCond %{HTTP:X-Forwarder-Proto} ^http$ [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

您正在使用Laravel,可能会有所帮助,请检查此Hi Joaquin谢谢您的评论。我尝试了这个方法,但是请求没有到达应用程序,它进入了一个无限的请求循环,因此浏览器出现了错误。是的,你应该三思而后行。。我不确定您是否可以刷新浏览器。。。也许给出一个新的临时路由,我的意思是浏览器没有缓存它,然后尝试删除cookie?这只是一个divagation这正是我所做的,因为ssl证书安装在elb上。我的应用程序正在接收http请求并返回https。在不更改elb规则的情况下,如何将其重定向到?
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteCond %{HTTP:X-Forwarder-Proto} ^http$ [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]