Как в Yii2 запретить все лишние параметры в урл, выводя 404?
Как в Yii2 запретить все лишние параметры в урл, выводя 404?
Т.е. если параметр лишний (не используется в скрипте), то должно отдаваться 404. И показывать только то, что разрешено.
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
Сделайте родителский контрол. В нём проверяйте.
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
это как? )
я совсем зеленый.
я совсем зеленый.
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
в общем случае
в urlManager в конфигурацию
Код: Выделить всё
'enableStrictParsing' => true,
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
@aquy И после этого сайт начнет выдавать 404 ошибку на левые параметры в $_GET?
Автор хочет запретить левые параметры в урл и пропускать запросы только с ограниченным списком параметров. для этого ему нужен базовый контроллер с beforeAction и проверка в нем в зависимости от контроллера и экшена, но сдается мне ТС не осознает какие грабли себе раскладывает
Автор хочет запретить левые параметры в урл и пропускать запросы только с ограниченным списком параметров. для этого ему нужен базовый контроллер с beforeAction и проверка в нем в зависимости от контроллера и экшена, но сдается мне ТС не осознает какие грабли себе раскладывает
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
возможно не осознаю в контексте фреймворка yii, но так должно быть, если логически подумать. Я то думал может как-то бехавиорсы настроить... а гуглил гуглил, оказывается народ такими вопросами даже не задается.padlyuck писал(а):@aquy И после этого сайт начнет выдавать 404 ошибку на левые параметры в $_GET?
Автор хочет запретить левые параметры в урл и пропускать запросы только с ограниченным списком параметров. для этого ему нужен базовый контроллер с beforeAction и проверка в нем в зависимости от контроллера и экшена, но сдается мне ТС не осознает какие грабли себе раскладывает
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
а причем тут юи? вам придется прописать список всех возможных допустимых параметров для каждого запроса. для примера: у меня есть в админке страница со списком записей, в ней 5 поисковых столбцов - т.е. это 5 параметров в запросе + 1 на пагинацию. сущностей в проекте на данный момент порядка 20. т.е. в проверке мне нужно будет указать около 120 параметров в зависимости от контроллера и действия, и каждый раз обновлять этот список если в процессе разработки будет меняться структура моделей.
Вы скажите ДЛЯ ЧЕГО вам это нужно?
Вы скажите ДЛЯ ЧЕГО вам это нужно?
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
Если это для SEO, то используйте лучше Url::canonical() и не беспокойтесь.
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
Вы сами ответили на свой вопрос. В каждом контроллере проверять допустимость параметров именно для него, а по дефолту отдавать 404.padlyuck писал(а):а причем тут юи? вам придется прописать список всех возможных допустимых параметров для каждого запроса. для примера: у меня есть в админке страница со списком записей, в ней 5 поисковых столбцов - т.е. это 5 параметров в запросе + 1 на пагинацию. сущностей в проекте на данный момент порядка 20. т.е. в проверке мне нужно будет указать около 120 параметров в зависимости от контроллера и действия, и каждый раз обновлять этот список если в процессе разработки будет меняться структура моделей.
Вы скажите ДЛЯ ЧЕГО вам это нужно?
5 на контроллер? Да не вопрос. Для СЕО, для чего ж еще. Да и вообще странно, что левые урлы обрабатываются. В хтакцесс запрет на все левое достаточно легко сделать. Но я и пытаюсь освоить юи, чтобы уйти от этого хтакцесса(и апача в целом)! Чтобы на уровне фреймворка решалось.
Пока поиковик склеит все страницы как надо пройдет немало времени. Это особенно актуально на вч запросах в топе. Вы видимо не сталкивались с ситуациями, когда конкуренты не жалея средств просто заспамливают ваш ресурс вот такими левыми ссылками, от чего сайт улетает в пучины топа.ElisDN писал(а):Если это для SEO, то используйте лучше Url::canonical() и не беспокойтесь.
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
Тогда добавьте блокирующий фильтр:
Или сделайте с редиректом на правильный адрес:
Но при этом в действия не забудьте явно добавить все разрешённые параметры:
чтобы работало разбиение на страницы.
Код: Выделить всё
if (Yii::$app->request->absoluteUrl !== $Url::canonical()) {
throw new NotFoundHttpException('Not found');
}
Код: Выделить всё
$canonical = Url::canonical();
if (Yii::$app->request->absoluteUrl !== $canonical) {
return $this->redirect($canonical, 301);
}
Код: Выделить всё
public function actionIndex($page = null) {...}
Re: Как в Yii2 запретить все лишние параметры в урл, выводя 404?
Реализовывал подобную задачу недавно. Для себя решил этот вопрос фильтром для контроллеров:
https://gist.github.com/notgosu/0597e00b813975f9d930
в комментариях есть пример по использованию.
https://gist.github.com/notgosu/0597e00b813975f9d930
в комментариях есть пример по использованию.