gpt4 book ai didi

laravel - 在 laravel 5.2 中将 http 重定向到 https

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:10 26 4
gpt4 key购买 nike

我有一个 Laravel 5.2 项目。最近,我在我的网站上安装了一个 SSL 证书,所以当我在浏览器中输入 https://example.com 时它可以工作,但是当我输入 example.com 时,它会连接通过 HTTP。

为了解决这个问题,我将这些行添加到我的 .htaccess 文件中:

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

之后,当我键入 example.com 时,浏览器会将我重定向到 https://example.com。太完美了。

问题是当我尝试访问 URL http://example.com/download/get/book/volume2 时,它没有将我重定向到 HTTPS。它将我重定向到索引页面。如果我在 URL 中添加 httpss 它工作正常,但我需要应用程序将我从 HTTP 重定向到 HTTPS。

路由文件中的路由:

Route::get('download/get/book/{book}'

该路径会打开我在浏览器选项卡的 privates/storage 文件夹中的 PDF 文件。

编辑:

我的 .htaccess 文件:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On

# 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}]

# require SSL
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

最佳答案

您的 HTTP 到 HTTPS 重定向需要靠近 .htaccess 文件的顶部,紧接在 RewriteEngine 指令之后,重要的是,之前 Laravel 前端 Controller

作为一般规则,外部重定向应该始终在内部重写之前进行。

前端 Controller 捕获所有请求(或者更确切地说,请求不映射到物理文件或目录)并将它们重写到 index.php(最终处理路由)。问题是您的 HTTP 到 HTTPS 重定向稍后发生,并将现在重写的 URL 转换为到 index.php 的外部重定向。

同样,您的# Handle Authorization Header block 也应该位于前端 Controller 之前(理想情况下)。 (由于 .htaccess 文件的循环特性,它将在每个目录的 .htaccess 文件中以其当前状态工作,但是如果您将这些指令移动到服务器配置它会失败。)

关于laravel - 在 laravel 5.2 中将 http 重定向到 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44010460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com