2014-02-21 4 views
1

Есть ли способ заставить Symfony throw 404, если есть дополнительные параметры?Symfony - Ограничить QueryParams

Например, у меня есть маршрут/новости/и я хочу разрешить только date параметр. Поэтому ссылка может существовать в этой форме: /news /? Date = 243242, но я хочу 404, если пользователь вводит следующую ссылку: /news /? Param = 2?

Спасибо.

(я не хочу, чтобы проверить параметры запроса в контроллер, я знаю, что могу)

ответ

0

Вам действительно нужно, чтобы они были получить Params? Вы встречаете свою цель, покупая их как значения в самом URL-адресе, например.

@Route("/news/date/{date}") 

Немного отличается, я знаю, - но вы можете применять его

+0

Проблема заключается в том, что у меня есть фильтры для списка новостей вроде категории, даты и т. Д. Таким образом, может существовать параметр категории get или нет. И все фильтры находятся в форме GET. В противном случае мне пришлось бы определять маршрут для всех комбинаций параметров. – CappY

+0

Если они являются фильтрами, то используйте параметры get, а затем вы можете добавить подтверждение в свой код. Вы можете запустить 404, если параметры недействительны. – BillyBigPotatoes

+0

Я знаю, что могу, но, как я уже сказал, я хочу, чтобы маршрутизатор заботился о нем. – CappY

0

Почему вы заботитесь о дополнительных Params в любом случае? Если какой-либо противный пользователь решает напрямую сыграть с URL-адресом, ваше приложение не должно вести себя правильно.

Не беспокойтесь обо всех этих проверках - если эти параметры не влияют на безопасность.


Основываясь на вашем комментарии, вы хотите ответить 404, чтобы избавиться от дублированного контента в Google. Для решения этой проблемы необходимо предпринять несколько шагов.

Если пользователь вводит дополнительный параметр вручную, никоим образом не добавляя страницу в индекс Google. Итак, если у вас есть дубликаты страниц на основе разных параметров в индексе Google, это означает, что у вас есть ссылки с этими дополнительными параметрами на вашем сайте. Вот так они индексируются.

Первое, что вы могли бы сделать, - это избавиться от этих ссылок. Затем вы можете перейти в Инструменты Google для веб-мастеров и вручную удалить индексированные страницы с этими дополнительными параметрами из индекса. Если у вас больше нет проблемных ссылок, они больше не попадут в индекс.

Если по какой-то причине вы не можете избавиться от этой ссылки, перейдите в «Инструменты для веб-мастеров» и ознакомьтесь с разделом «Параметры URL», чтобы понять, как добавлять параметры, которые следует игнорировать Google.

+0

Я знаю из-за дублированного контента (Google) :) Вот почему. – CappY

+0

Обновлен ответ. –

+0

Итак, если у вас есть дубликаты страниц на основе различных параметров в индексе Google, это означает, что у вас есть ссылки с этими дополнительными параметрами на вашем сайте. Вот как они заканчиваются индексированием. Плохие пользователи могут использовать свои сайты для ссылок на мои сайты с этими дополнительными параметрами. – CappY

Смежные вопросы