Bandicoot
@Bandicoot
Вась-программист

Как наиболее изящно решить проблему с замыкающим слэшем в Yii2?

Проблема не новая, но однозначного решения пока так и не нашел.
Допустим есть 2 варианта url:
site.com/index
site.com/index/

По умолчанию первый сработает нормально, а второй вернет ошибку 404.
Если прописать в urlManager дополнительную опцию:
'suffix' => '/',
То все сработает с точностью до наоборот. Правил разбора url может быть множество и для каждого предусматривать опциональный слеш я думаю не вариант.
Какое есть оптимальное решение для этого случая?
  • Вопрос задан
  • 1178 просмотров
Решения вопроса 1
Stasgar
@Stasgar
Обученная макака
https://github.com/yiisoft/yii2/issues/7670
$config = [
    // ...
    'params' => require(__DIR__ . '/params.php'),

    // redirect to the page with the trailing slash
    'on beforeRequest' => function () {
        $app = Yii::$app;
        $pathInfo = $app->request->pathInfo;
        if (!empty($pathInfo) && substr($pathInfo, -1) !== '/') {
            $app->response->redirect('/' . rtrim($pathInfo) . '/', 301);
        }
    },
];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы