在我的第一个Laravel 5项目上工作,不确定在我的应用程序中强制使用HTTPS的逻辑位置和方式.这里的关键是有许多域指向应用程序,只有三分之二使用SSL(第三个是后备域,长篇故事).所以我想在我的应用程序逻辑而不是.htaccess中处理这个问题.
在Laravel 4.2中,我使用此代码完成了重定向,位于filters.php:
App::before(function($request)
{
if( ! Request::secure())
{
return Redirect::secure(Request::path());
}
});
Run Code Online (Sandbox Code Playgroud)
我认为中间件应该在这样的地方实现,但我不能完全理解这一点.
谢谢!
UPDATE
如果您像我一样使用Cloudflare,可以通过在控制面板中添加新的页面规则来实现.
我似乎无法在弹性beanstalk的免费使用层上强制使用https.
我在如何强制https on amazon elastic beanstalk上尝试了以下建议而不会失败健康检查
使用此Apache重写规则
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/status$
RewriteCond %{REQUEST_URI} !^/version$
RewriteCond %{REQUEST_URI} !^/_hostmanager/
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,http请求不会像我想的那样被重定向到https.相反,http页面正常加载.我也尝试使用X-Forwarded-Port标头,结果相同.
我也尝试了以下重写规则
RewriteCond %{SERVER_PORT} 80
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Run Code Online (Sandbox Code Playgroud)
此规则会导致重定向循环.因此,似乎apache重写规则不会获取Elastic Load Balancer标头X-Forwarded-Port和X-Forwarded-Proto,但重定向循环也不是我想要的.
请帮忙.我是AWS,Elastic Beanstalk的新手,并且不熟悉Apache规则.我不太确定从哪里开始.谢谢.
apache mod-rewrite https amazon-web-services amazon-elastic-beanstalk
我刚刚在我的网络服务器上安装了SSL证书,而且我的laravel设置存在一些问题.
我正在使用
{{ HTML::style('css/style.css') }}
Run Code Online (Sandbox Code Playgroud)
包括css和js
{{ HTML::script('js/jquery.js') }}
Run Code Online (Sandbox Code Playgroud)
虽然当我用https加载页面时,它似乎包含2而不是https.
知道为什么吗?