Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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
Heroku Laravel上的HTTPS重定向无法正常工作_Laravel_.htaccess_Heroku_Mod Rewrite_Https - Fatal编程技术网

Heroku Laravel上的HTTPS重定向无法正常工作

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

我试图在子域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 .* - [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文件顶部的最后一条规则,然后再试一次,好吗?