laravel - 如何设置 Laravel 路由重定向到 https?

标签 laravel ssl routes laravel-5

将我在 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/

相关文章:

mysql - Laravel 迁移值从 null 到 string

设置中的 Laravel-Backpack/Settings 表字段

android - javax.net.ssl.SSLException : hostname in certificate didn't match in Android 异常

laravel - 每个 Route::group 禁用 web 中间件

php - 如何在 Laravel 集成测试中等待页面重新加载

php - orWhere 在 Laravel 查询生成器中查询

Javascript IMAP 和 SMTP 客户端?

php - 本地主机中 SugarCRM 中的 SSL 错误

php - 将 2 个参数传递给 Laravel 路由 - 资源

linux - 从 wifi 访问以太网 ip