web-dev-qa-db-ja.com

Laravel ProjectですべてのルートにHTTPSを使用するように強制するにはどうすればよいですか?

安全な接続が必要なプロジェクトに取り組んでいます。

ルート、URI、アセットを設定して、「https」を使用できます:

Route::get('order/details/{id}', ['uses' => 'OrderController@details', 'as' => 'order.details', 'https']);

url($language.'/index', [], true)

asset('css/bootstrap.min.css', true)

しかし、常にパラメーターを設定するのは面倒です。

すべてのルートにHTTPSリンクを生成させる方法はありますか?

20
Nelson Melecio

'url' => 'https://youDomain.com'config/app.phpを設定するか、ミドルウェアクラス Laravel 5-HTTPSへのリダイレクト を使用できます。

18
Mirceac21

いくつかの方法があります。最も便利なものを選択してください。

  1. すべての非セキュアリクエストをhttpsにリダイレクトするようにWebサーバーを構成します。 nginx設定の例:

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name example.com www.example.com;
        return 301 https://example.com$request_uri;
    }
    
  2. Httpsを使用して環境変数APP_URLを設定します。

    APP_URL=https://example.com
    
  3. ヘルパーを使用 secure_url() (Laravel5.6)

  4. AppServiceProvider :: boot()メソッドに次の文字列を追加します(バージョン5.4以降):

    \Illuminate\Support\Facades\URL::forceScheme('https');
    

更新:

  1. ルートグループ(Laravel5.6)の暗黙的なスキーム設定:

    Route::group(['scheme' => 'https'], function () {
        // Route::get(...)->name(...);
    });
    
14

これをboot()メソッドのAppServiceProviderに配置します

if($this->app->environment('production')) {
    \URL::forceScheme('https');
}
12
Amitesh

web.phpまたはapi.phpファイルの最後にこれを使用しましたが、完全に機能しました。

URL::forceScheme('https');
6
lomelisan

これを.htaccessコードに追加します

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]

Www.yourdomain.comをドメイン名に置き換えます。これにより、ドメインのすべてのURLで強制的にhttpsが使用されます。ドメインにhttps証明書がインストールおよび構成されていることを確認してください。セキュアな緑色のhttpsが表示されない場合は、chromeでf12を押して、コンソールタブで混合エラーをすべて修正します。

お役に立てれば!

6
Srikanth Gopi

.htaccessファイルで次のコードを使用すると、訪問者がサイトのHTTPSバージョンに自動的にリダイレクトされます。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
4
arian
public function boot()
{
  if(config('app.debug')!=true) {
    \URL::forceScheme('https');
  }
}

app/Providers/AppServiceProvider.php

0
Markos F

これを試してください-RouteServiceProviderファイルで動作します

    $url = \Request::url();
    $check = strstr($url,"http://");
    if($check)
    {
       $newUrl = str_replace("http","https",$url);
       header("Location:".$newUrl);

    }
0
mostafa nahfouz