将我在 Laravel 5.2 上的一些路由设置为使用 SSL 重定向的正确方法是什么? http->https
此外,如果我在安全页面中加载 http
组件,我是否仍然能够加载 http
Assets ,或者 firefox/chrome/IE 是否会出现问题?
最佳答案
如果你需要重定向到 Https
那么你可能想知道 laravel
redirect
中的一个选项。
有一个名为 redirect()
的用于重定向的 laravel 助手
检查 ..vendor\laravel\framework\src\Illuminate\Foundation\helpers.php
文件
if (! function_exists('redirect')) {
/**
* Get an instance of the redirector.
*
* @param string|null $to
* @param int $status
* @param array $headers
* @param bool $secure
* @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse
*/
function redirect($to = null, $status = 302, $headers = [], $secure = null)
{
if (is_null($to)) {
return app('redirect');
}
return app('redirect')->to($to, $status, $headers, $secure);
}
}
检查参数$to = null, $status = 302, $headers = [], $secure = null
Https
有一个选项为 $secure
,将其设置为 true,您将获得 EX 的 Https
重定向:
redirect('/', 302, [], true)
注意: 我也遇到过这种情况,当网站在 Https
上运行时,我确实遇到了 404 错误
> 和我记得的通过 Http
加载 Assets ,最好再检查一遍。 :)
有一个加载安全 Assets 的助手secure_asset()
我在 Http
中测试和在 Https
中进行生产时遇到了一些困难,一些 Assets 没有加载并且重定向不起作用,我们所做的是创建一个单独的帮助删除模式,
if (! function_exists('urlWithoutSchema')) {
/**
* Generate a url for the application without schema.
*
* @param string $path
* @param mixed $parameters
* @param bool $secure
* @return string
*/
function urlWithoutSchema($path = null, $parameters = array(), $secure = null)
{
$url = app('url')->to($path, $parameters, $secure);
return str_replace(parse_url($url, PHP_URL_SCHEME).':', '', $url);
}
}
然后 urlWithoutSchema("https://laravel.com/")
将导致 //laravel.com/
如果你使用 redirect(urlWithoutSchema("your-site-name.com"))
然后它会重定向到 //your-site-name.com/
这意味着如果您使用 Https
网站将使用 Https
重定向到 Http
。
同样的事情可以用于加载 Assets ,例如,
<link href="{{ urlWithoutSchema('css/vendor.css') }}" rel="stylesheet" />
然后当你在 Http
上运行时 css/vendor.css
将通过 Http
加载,如果你在 Https< 上运行
Assets 将通过 Https
加载。
使用这个你可以避免一些问题回溯环境有 Https
和没有 Https
关于laravel - 如何设置 Laravel 路由重定向到 https?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36637489/