拔出我的头发。我需要强制使用HTTPS并在.htaccess文件中使用以下内容进行过多的重定向。根据我对Stack的研究,这应该可行。清除缓存,cookie等等。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
答案 0 :(得分:3)
好,知道了。因为我在负载均衡器后面,所以不得不更换:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
其中:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]
有关为何在此处需要该标题的更多信息:Load Balancers and HTTPS
答案 1 :(得分:0)
我有一个类似的问题(使用Codeigniter并使用AWS Classic ELB),但是上述解决方案对我不起作用。我必须在https.conf文件中应用重写条件和规则,然后重新启动apache服务器。请参阅此处以了解操作方法。同样值得注意的是,AWS不建议使用.htaccess方法(不确定原因):
https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/
答案 2 :(得分:0)
我在共享主机上遇到了Laravel 6的类似问题。当我将CPanel配置为将我的应用重定向到安全的https
网址时,它会一直无限重定向。
我在.htaccess
中有这个
RewriteCond %{HTTP_HOST} ^biblioteca\.vallenateca\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.biblioteca\.vallenateca\.com$
RewriteRule ^/?$ "https\:\/\/biblioteca\.vallenateca\.com" [R=301,L]
我添加了这两行。
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{HTTP_HOST} ^biblioteca\.vallenateca\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.biblioteca\.vallenateca\.com$
RewriteRule ^/?$ "https\:\/\/biblioteca\.vallenateca\.com" [R=301,L]
它解决了。
答案 3 :(得分:0)
在 laravel 8 中,.htaccess 文件的默认值是:
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
这对我有用,我正在使用 Inmotion 托管:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]