Jua*_*pez 4 .htaccess ssl https redirect laravel
我有一个Laravel 5.2项目。最近,我在网站上安装了SSL证书,因此,当我https://example.com
在浏览器中键入内容时,它可以工作,但是在编写时example.com
,它通过HTTP连接。
为了解决这个问题,我在.htaccess
文件中添加了以下几行:
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
之后,当我键入内容时example.com
,浏览器会将我重定向到https://example.com
。那很完美。
问题是当我尝试访问URL时http://example.com/download/get/book/volume2
,它没有将我重定向到HTTPS。它将我重定向到索引页面。如果在URL中添加s
of https
,它可以正常工作,但是我需要该应用将我从HTTP重定向到HTTPS。
路由文件中的路由:
Route::get('download/get/book/{book}'
Run Code Online (Sandbox Code Playgroud)
该路线将打开我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]
Run Code Online (Sandbox Code Playgroud)
您的HTTP到HTTPS重定向需要.htaccess
在RewriteEngine
指令之后,尤其是在Laravel Front Controller 之前,紧靠文件顶部。
通常,外部重定向应该始终在内部重写之前进行。
前端控制器捕获所有请求(或者更确切地说,未映射到物理文件或目录的请求)并将其重写index.php
(最终处理路由)。问题是您的HTTP到HTTPS重定向会在以后发生,并将现在重写的URL转换为到的外部重定向index.php
。
同样,您的# Handle Authorization Header
块也应该放在前端控制器之前(理想情况下)。(.htaccess
由于文件的循环性质,它将在每个目录文件的当前状态下工作.htaccess
,但是如果将这些指令移动到服务器配置,它将失败。)
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Run Code Online (Sandbox Code Playgroud)
RewriteEngine On
在您的.htaccess
文件中添加上面两行。它会自动将发往 http: 的任何流量重定向到 https:
最后,您的 .htaccess 文件将如下所示
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Redirect to https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# 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]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4943 次 |
最近记录: |