如果有人直接进入www.myapp.com,浏览器会将他们带到http://www.myapp.com
myapp配置为使用https,所以如果我们手动输入https://www.myapp.com,那么laravel是否正确生成https网址没有问题?
如果用户只是输入www.myapp.com而不是浏览器将其转到http,我怎么让浏览器转到https?
实现这一目标的最优雅的地方在哪里?
答案 0 :(得分:1)
你可以使用这样的中间件:
public function handle($request, Closure $next)
{
if (!app()->environment('local')) {
// for Proxies
Request::setTrustedProxies([$request->getClientIp()]);
if (!$request->isSecure()) {
return redirect()->secure($request->getRequestUri());
}
}
return $next($request);
}
答案 1 :(得分:1)
您应该在 .htaccess 文件中加入此内容:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
答案 2 :(得分:0)
将\URL::forceScheme('https');
添加到AppServiceProvider
这是一个可选的解决方案。