Heroku Laravel上的HTTPS重定向无法正常工作
我试图在子域Heroku/Laravel上强制使用HTTPS。请参阅下面的.htaccess 它不起作用。取而代之的是子域https://sub.domain.com/anything 重定向到https://sub.sub.domain.com/index.php. 请参阅URL中的double sub和index.php 重新启动发动机Heroku Laravel上的HTTPS重定向无法正常工作,laravel,.htaccess,heroku,mod-rewrite,https,Laravel,.htaccess,Heroku,Mod Rewrite,Https,我试图在子域Heroku/Laravel上强制使用HTTPS。请参阅下面的.htaccess 它不起作用。取而代之的是子域https://sub.domain.com/anything 重定向到https://sub.sub.domain.com/index.php. 请参阅URL中的double sub和index.php 重新启动发动机 # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# If we receive a forwarded http request from a proxy...
RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
# ...or just a plain old http request directly from the client
RewriteCond %{HTTP:X-Forwarded-Proto} =""
RewriteCond %{HTTPS} !=on
# Redirect to https version
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
请尝试以下htaccess文件。仅根据所显示的样本,已更改规则的顺序。请不要对其进行测试。请确保在测试任何URL之前清除浏览器缓存
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# If we receive a forwarded http request from a proxy...
RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
# ...or just a plain old http request directly from the client
RewriteCond %{HTTP:X-Forwarded-Proto} =""
RewriteCond %{HTTPS} !=on
# Redirect to https version
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
另一种更好的解决方案是直接在Laravel中强制使用HTTPS,而不是在NGINX中 通过这种方式,Laravel直接生成HTTPS URL,您不必重定向它 要在Laravel中强制使用HTTPS,应在App\Providers\AppServiceProvider中添加以下内容: /** *引导任何应用程序服务。 */ 公共函数启动 { 如果!应用程序::环境[ "本地",, "测试",, ] { URL::forceScheme'https'; } }
请将规则从RewriteCond%{HTTP:X-Forwarded-Proto}=HTTP[OR]移动到htaccess文件顶部的最后一条规则,然后再试一次,好吗?