Переадресация запросов без "www" на урлы с "www"

Запросы Настройка

Автор: ACym.ru - February 5, 2016 3:22 pm

Код для перебрасывания всех запросов без "www" на те же урлы, но с "www", без использования .htaccess

Традиционно редирект запросов без www на страницы сайта с www в урлах осуществляется через файл .htaccess

Но это совершенно не обязательно.

То же самое можно сделать средствами Laravel.

Для этого в маршрутизатор (файл /app/Http/routes.php) нужно дописать фильтр:

Route::filter('www',  function () {
    //Добавляем 'www.' ко всем фильтруемым запросам
  $request=app('request');
  $host=$request->header('host');
  if (substr($host, 0, 4) != 'www.') {
    $request->headers->set('host', 'www.'.$host);
    return Redirect::to($request->path());
  }
});

Теперь этот фильтр можно использовать в тех маршрутах, которые вы будете редиректить на урлы с добавлением www.

Скажем, домашняя страница сайта.

Меняем маршрут

Route::get('/', 'HomeController@index');

На следующий:

Route::get('/', function () {
  get('/', 'HomeController@index');

Аналогично поступаем с другими маршрутами, урлы которых нужно отфильтровать.

Удачных разработок!
Заходите на LaraNotes.ru, и оставляйте свои записки по работе с Laravel.

.