Как заставить проект Laravel использовать 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-ссылки?
5 answers
Вы можете установить 'url' => 'https://youDomain.com'
в config/app.php
или использовать класс промежуточного программного обеспечения Laravel 5 - перенаправление на HTTPS.
Вот несколько способов. Выбирайте наиболее удобный.
-
Настройте свой веб-сервер так, чтобы он перенаправлял все незащищенные запросы на 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; }
-
Установите переменную среды
APP_URL
, используя https: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(...); });
Добавьте это в свой код.htaccess
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]
Заменить www.yourdomain.com с вашим доменным именем. Это заставит все URL-адреса вашего домена использовать https. Убедитесь, что в вашем домене установлен и настроен сертификат https. Если вы не видите, что https выделен зеленым цветом как безопасный, нажмите f12 в chrome и исправьте все смешанные ошибки на вкладке консоли.
Надеюсь, это поможет!
Я использовал это в конце файла routes.php
, и он отлично работал:
URL::forceSchema('https');
Поместите это в AppServiceProvider в метод boot()
if($this->app->environment('production')) {
URL::forceScheme('https');
}