【发布时间】:2017-10-16 01:35:54
【问题描述】:
我有一个 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 中添加 https 的 s ,它可以正常工作,但我需要应用程序将我从 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]
【问题讨论】:
-
您在这些“子目录”中是否还有其他
.htaccess文件? (它们是物理子目录吗?) -
不,我有一个“public_html”文件夹,其中是我的 .htaccess 和一个“privates”文件夹,其中包含所有视图、控制器等
-
在这种情况下,您在
.htaccess文件的哪个位置添加了这些指令?请在您的问题中包含您的.htaccess文件的内容。
标签: laravel .htaccess ssl redirect https