2016-04-15 45 views
0

在Laravel 5.2上設置一些路由使用SSL重定向的正確方法是什麼? http->https如何設置Laravel路線重定向到https?

另外,如果我將http組件加載到安全頁面,我仍然可以加載http資產,或者firefox/chrome/IE會有問題嗎?

回答

2

如果您需要重定向到Https那麼在laravelredirect中有一個選項,您可能想知道。

沒有爲重定向稱爲redirect()

檢查..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); 
    } 
} 

檢查laravel幫手參數$to = null, $status = 302, $headers = [], $secure = null

沒有爲Https作爲$secure一個選項,將其設置爲true,並有你會得到一個Https EX重定向: redirect('/', 302, [], true)

注:我也有這種事情工作,我沒有得到一個404 error時,該網站是在Https和資產裝載槽Http運行我記得,更好地檢查一遍。 :)

沒有加載安全資產secure_asset()


HttpsHttp和生產測試時我面臨一些困難幫手,有些資產不加載,並重新方向不工作,什麼我們所做的就是創建一個單獨的助手刪除模式,

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); 
    } 
} 

THEN 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" /> 

然後,當你在Httpcss/vendor.css運行將通過Http加載,如果你對Https運行資產將通過Https加載。

使用這個你能避免一些問題regurding具有Https和環境沒有Https