parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Mizter Egoist 17.11.2015 16:38

У сайта есть таблицы:
Категории
Подкатегории
Записи
Товары

Для каждой предусмотрен свой uri.

Например зайдем на /section
По логике section должен быть категорией, мы обращаемся в БД и сверяем $sections.url eq 'section', если совпадает применяем необходимые действия. Если неверно, то выдаем 404.

Далее зайдем на /section/heading
По логике section, это категория, а heading, это подкатегория.
Обращаемся в БД, смотрим, если существует heading и у него $heading.section_id eq $section.id, то все верно, выполняем действия, но если нет, то значит вместо подкатегории указан адрес записи или товара который находится на верхнем уровне, выше всех подкатегорий. Если неверно, то выдаем 404.
Записи и товары могут иметь несколько подкатегорий.

Далее зайдем на /section/heading/entry
По логике, section, это категория, heading, это подкатегория, а entry это товар или запись.
Проверяем section, если существует section, то проверяем heading, если существует heading у которого указано, что он является подкатегорией выбранной категории, далее проверяем entry, если это товар или запись, то проверяем относиться ли она к выбранной категории и содержит в себе выбранную подкатегорию, если все верно, выполняем действия. Если неверно, то выдаем 404.

При этом /section/heading/entry должен поддерживать дополнительные запросы, /section/heading/entry?foo=bar
И если foo=bar ничего в себе не несет, а скажем просто utm-метка, то все равно показываем страницу

У меня не получилось задуманное.
Или всегда выдает 404 или проверка допускает несуществующие адреса и получается, что если зайти на несуществующую страницу /foo/bar то выдаст статус 200.
В последнем примере кода у меня получилось делать сверку и выдавать правильно страницы и если их нет, то 404.
Но при этом не поддерживаются дополнительные запросы ?foo=bar, выдает 404.