如何设置Laravel Routes重定向到https?

时间:2016-04-15 02:55:05

标签: laravel ssl routing laravel-5.2

使用SSL将Laravel 5.2上的某些路由设置为重定向的正确方法是什么? http->https

此外,如果我在安全页面中加载http组件,我仍然可以加载http资产,还是firefox / chrome / IE会出现问题?

1 个答案:

答案 0 :(得分:2)

如果您需要重定向到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)

注意: 我也使用了这种方式,当网站在404 error上运行并且资源加载到{{{}时,我确实获得了Https 1}}我记得,最好再次检查一下。 :)

有一个用于加载安全资产的帮助器secure_asset()

我在Http中进行测试时遇到了一些困难,而在Http中进行了测试,有些资产没有加载,重定向无效,我们做的是创建一个单独的帮助程序来删除模式,

Https

然后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

然后,当您在<link href="{{ urlWithoutSchema('css/vendor.css') }}" rel="stylesheet" /> Http上运行时,css/vendor.css将加载,如果您在Http上运行,则资源将通过Https加载。

使用此功能可以避免出现Https并且没有Https

的环境问题