Завершающий слеш laravel

230
03 марта 2018, 21:20

Есть юрл страницы site/fr , site/de и пр.
Когда прописываешь site/fr или site/fr/ получается дублирование страницы.
Как через Route или другими способом добавать(редирект на страницу со) слеш. Например ввел site/fr а тебе выдало страницу site/fr/ , через htaccess не вариант так как он добавит всем адресам слеш, а мне не нужно чтобы только когда выбор языка, потому что далее site/fr/page выглядит юрл без слеша.

Answer 1

В данном случае будет эффективно создать middleware php artisan make:middleware DontEndSlashMiddleware и добавить его в список посредников группы web в файле app/Http/Kernel.php. В методе handle вновь созданного посредника написать алгоритм 301 редиректа для страниц с закрывающим слешем

public function handle($request, Closure $next)
{
    $uri = $request->getRequestUri();
    if($uri != '/' && $uri[strlen($uri)-1] == '/'){
        return redirect(substr($uri,0,strlen($uri)-1),301);
    }
    return $next($request);
}

Данный посредник будет проверять, оканчивается ли REQUEST_URI на slash или нет, конечно же не учитывая главную страницу. Если есть закрывающий slash, то произойдет редирект на эту же страницу без закрывающего слеша

READ ALSO
Yii2, ActiveRecord и наследование таблиц в PostgreSQL

Yii2, ActiveRecord и наследование таблиц в PostgreSQL

Есть общая таблица realty, от нее наследуются таблицы flat, house, areaКо всем этим таблицам созданы модели ActiveRecord

204
разбить и соединить

разбить и соединить

Есть несколько строк их нужно разбить проверить и соединить

208
Ошибка failed to open stream: No error in *путь к файлу* on line 25

Ошибка failed to open stream: No error in *путь к файлу* on line 25

Делаю рекапчу, подключил все как в видео - уроках, но вылазит ошибка, в чем проблема?

209
Как вычесть два объекта типа DateInterval в PHP?

Как вычесть два объекта типа DateInterval в PHP?

Всем привет! Создаю тайм трекер на PHP, и приходится много работать со временем и датамиСтолкнулся с проблемой с вычитанием дат, если отнимать...

229