Ответ
AEM 29.08.2007 20:19
Краткое описание того, что я делал году в 2003 (PHP, версия движка PDS v.2).
В нем я реализовал чистоту адресов, т. е. минимальная передача get-параметров (только в искл. случаях). Не куда не смотрел, просто додумался. Сначала было гадко, затем лучше :-).
В итоге: в базе ищутся макс. пути от корня, если у нас адрес
/about/events/2007/12/3415/, то по порядку в базе ищутся about,
about/events, естественно,
about/events/2007 в базе нет, так как это уже параметр -- значит берем второй.
Соответсвенно, ищем
имя модуля того раздела у которого
base_path идентичен
about/events. Если есть конец, в нашем случае
2007/12/3415, в папке с именем модуля находим файл
url.preg (если он есть, иначе 404).
Содержание
url.preg в данном случае
year=/^(\d+)$/
month=/^(\d+)\/(\d+)$/
year/month/issue=/^(\d+)\/(\d+)\/(\d+)$/
затем парсим, и устанавливаем псевдо-get параметры (если в адресной строке уже есть шняги типа /about/events/2007/12/3415/?year=2003, то переписываем их).
А затем проверяем наличие года, в нем месяца и события и др. вещи. Обрабатываем 404, если что не так, или собираем буфер данными. Ну, и так далее...
Стоит приложить чуточку времени и ума, и не стоит терять время и по каждой мелочи тут спрашивать: научите, расскажите, покажите.