Как заставить Laravel Project использовать HTTPS для всех маршрутов?

Я работаю над проектом, который требует безопасного соединения.

Я могу установить маршрут, uri, актив, чтобы использовать 'https' через:

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

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

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

Но установка параметров все время кажется утомительным.

Есть ли способ заставить все маршруты генерировать ссылки HTTPS?

Ответ 1

Вы можете установить 'url' => 'https://youDomain.com' в config/app.php, или вы можете использовать класс промежуточного ПО Laravel 5 - перенаправить на HTTPS.

Ответ 2

Вот несколько способов. Выберите наиболее удобный.

  1. Настройте свой веб-сервер для перенаправления всех незащищенных запросов на https. Пример конфигурации 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. Установите переменную окружения APP_URL используя https:

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

Ответ 3

Поместите это в AppServiceProvider в методе boot()

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

Ответ 4

Добавьте это в свой .htaccess код

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

Замените www.yourdomain.com своим доменным именем. Это заставит все URL вашего домена использовать https. Убедитесь, что в вашем домене установлен и настроен сертификат https. Если вы не видите https зеленым как безопасный, нажмите f12 на chrome и исправьте все смешанные ошибки на вкладке консоли.

Надеюсь, это поможет!

Ответ 5

Я использовал это в конце файла web.php или api.php и он работал отлично:

URL::forceScheme('https');

Ответ 6

Использование следующего кода в вашем файле .htaccess автоматически перенаправляет посетителей на HTTPS-версию вашего сайта:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ответ 7

public function boot()
{
  if(config('app.debug')!=true) {
    \URL::forceScheme('https');
  }
}

в приложении/Поставщики /AppServiceProvider.php

Ответ 8

попробуй это - будет работать в файле RouteServiceProvider

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

    }