安全な接続が必要なプロジェクトに取り組んでいます。
ルート、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リンクを生成させる方法はありますか?
'url' => 'https://youDomain.com'
でconfig/app.php
を設定するか、ミドルウェアクラス Laravel 5-HTTPSへのリダイレクト を使用できます。
いくつかの方法があります。最も便利なものを選択してください。
すべての非セキュアリクエストを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;
}
Httpsを使用して環境変数APP_URL
を設定します。
APP_URL=https://example.com
ヘルパーを使用 secure_url() (Laravel5.6)
AppServiceProvider :: boot()メソッドに次の文字列を追加します(バージョン5.4以降):
\Illuminate\Support\Facades\URL::forceScheme('https');
更新:
ルートグループ(Laravel5.6)の暗黙的なスキーム設定:
Route::group(['scheme' => 'https'], function () {
// Route::get(...)->name(...);
});
これをboot()メソッドのAppServiceProviderに配置します
if($this->app->environment('production')) {
\URL::forceScheme('https');
}
web.php
またはapi.php
ファイルの最後にこれを使用しましたが、完全に機能しました。
URL::forceScheme('https');
これを.htaccessコードに追加します
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]
Www.yourdomain.comをドメイン名に置き換えます。これにより、ドメインのすべてのURLで強制的にhttpsが使用されます。ドメインにhttps証明書がインストールおよび構成されていることを確認してください。セキュアな緑色のhttpsが表示されない場合は、chromeでf12を押して、コンソールタブで混合エラーをすべて修正します。
お役に立てれば!
.htaccessファイルで次のコードを使用すると、訪問者がサイトのHTTPSバージョンに自動的にリダイレクトされます。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
public function boot()
{
if(config('app.debug')!=true) {
\URL::forceScheme('https');
}
}
app/Providers/AppServiceProvider.php
これを試してください-RouteServiceProviderファイルで動作します
$url = \Request::url();
$check = strstr($url,"http://");
if($check)
{
$newUrl = str_replace("http","https",$url);
header("Location:".$newUrl);
}