2017-06-07 213 views
1

今天,我決定將我的網站遷移到HTTPS。早期我的網站在HTTP上工作。Laravel HTTPS路線

我的問題是誤解Laravel如何通過HTTP和HTTPS助手功能route('name')

我改變config/app.php我的網站的URL https://www.domain.name,我認爲,這個解決方案可以幫助我。但是我得到了一個奇怪的結果。

php artisan tinker如果我通過route('ROUTE.NAME')我得到了正確的鏈接https://www.domain.name/route/path 但在刀片模板我http://www.domain.name/route/path

同樣的情況與\URL::to('/')

也許有人能向我解釋爲什麼會這樣?

+0

什麼是完全寫在你的'config/app.php'中?難道是另一個url被定義在根目錄下的'.env'文件中,並且'env()'正在加載它? – UfguFugullu

+0

您是使用'http'還是'https'在瀏覽器中訪問網站? –

+0

@UfguFugullu .env我通過https://www.domain.name和config/app.php – Mgorunuch

回答

0

的@dekts反應是正確的,但「正確」地方放這些東西是「應用/供應商/ AppServiceProvider.php」關於啓動方法。

//file: app/Providers/AppServiceProvider.php 
use Illuminate\Support\Facades\URL; 

class AppServiceProvider extends ServiceProvider { 

    public function boot() 
    { 
     if (app()->environment('remote')) { 
      URL::forceScheme('https'); 
     } 
    } 

    ... 
} 

您還可以添加一個新的變量上的 「.ENV」 的文件,是這樣的:

#file: .env 
FORCE_HTTPS=true 

和更改條件

//file: app/Providers/AppServiceProvider.php 
public function boot() 
{ 
    if(env('FORCE_HTTPS')) { 
     URL::forceScheme('https'); 
    } 
} 

希望這有助於。

1

我爲此奮鬥了很長時間。我的解決辦法是把我的routes.php文件文件中的下列(你可能更喜歡一個不同的地方吧)

我也纏此行條件語句,所以它僅適用於我的遠程配置:

if (App::environment('remote')) { 
    URL::forceSchema('https'); 
} 

您可以嘗試在boot方法中添加您的AppServiceProvider。 這裏:app/Providers/AppServiceProvider.php

或者另一種方式:

所以我想通了。這不是那麼容易,但在你的AppServiceProvider.php你必須添加:$this->app['request']->server->set('HTTPS', true);register方法。這就是我想出來的。

Btw。設置APP_URL不會對您的應用程序的HTTP一側產生任何影響,這是針對工匠的。

PS。 CloudFlare的HTTPS重新寫入也是不錯的主意:)