Здравствуйте! Возник вопрос по ЧПУ. Есть страница site.ru/articles у которой есть несколько параметров, таких как month и year. То есть страницы могут быть
site.ru/articles?month=10 или
site.ru/articles?year=2015 или
site.ru/articles?year=2015&month=10 или
site.ru/articles без параметров.
Получается если сделать ЧПУ, то нужно всегда вводить все параметры, иначе страницы
site.ru/articles/2015 и site.ru/articles/10 будет считать, что введен year
Как сделать, что ЧПУ распозновал, когда введен month, а когда year?
получается, что нужно всегда передавать обе переменные.С годом и месяцем я для примера привел. В переменных могут быть и строки, которые пользователь ввел и по длине строки определить переменную не получится
А вы сами можете определить критерии по которым определять что ввел пользователь? Если я набрал 12 - это месяц,год, фаза луны, день, или страница на которую надо перейти?
Получается, что нужно всегда передавать 2 переменные. Для примера я привел год и месяц, а если там строковые параметры, которые вводит пользователь и по длине нельзя понять какой параметр
Имхо - есть хардкод решение - отличать самому в коде. 2 знака - месяц, 4-год, но это не застрахует от пользователя, который введет 12, думая что это год
Конкретно в вашем случае можно считать количество символов, то есть для года это 4 символа для месяца от 1го до 2х
и тогда будут работать и ссылки такого вида site.ru/articles/2015/10, site.ru/articles/10/2015
Получается, что нужно всегда передавать 2 переменные. Для примера я привел год и месяц, а если там строковые параметры, которые вводит пользователь и по длине нельзя понять какой параметр
Shaman739: я описал решение для конкретной задачи с годом и месяцем, где можно было бы писать год или месяц или оба вместе, если рассматривается не год то можно использовать либо какие то префиксы либо делать четкий роутинг (с префиксами это выглядело бы так site.com/articles/year:2015/month:10/any:ok