Создание ЧПУ для категорий сайта с помощью PHP

277
07 сентября 2017, 19:25

Подскажите, пожалуйста, как сделать с помощью PHP и БД так, чтобы новости на сайте отображались за принципом news/название_категории/название_статьи

Если на сайте, например, есть 30 категорий.

Answer 1
  1. Для каждой категории и статьи храните в БД так называемый «slug». Это краткое или полное уникальное название латиницей.
  2. Во время запроса, проверяете, соответствует ли он формату news/<category_slug>/<article_slug>
  3. Проверяете в БД, есть ли категория с запрошенным category_slug. Если нет – прерываете алгоритм. Если есть, получаете ID категории.
  4. Проверяете в БД, есть ли статья с запрошенным article_slug. Если нет – прерываете алгоритм. Если есть, проверяете дополнительно, принадлежит ли статья выбранной на шаге 3 категории (по ID категории). Если не принадлежит – прерываете алгоритм. Если принадлежит, получаете ID статьи.
  5. Имея ID категории и ID статьи, отображаете страницу со всем необходимым наполнением.

Иногда URL делают вида news/<category_slug>/<article_id>-<article_slug>. Например: news/cats/56-my-story-about-little-cats

В этом случае на 4 шаге в БД происходит поиск по article_id, а затем для полученной статьи переданный в запросе article_slug сравнивается с выбранным из БД article_slug. Это позволяет не индексировать в БД колонку article_slug и задавать достаточно длинные URL.

Если интересует что-то ещё – спрашивайте.

READ ALSO
Проблемы с кодировкой в БД [дубликат]

Проблемы с кодировкой в БД [дубликат]

На данный вопрос уже ответили:

186
работа с картинкой php

работа с картинкой php

Здравствуйте, Есть база данных строящихся зданийЕжемесячно надо менять в них фото(одно) на текущее время и данные о расходах для отчета

201
php новостная лента

php новостная лента

Мне нужно сделать ленту новостей есть примерно вот такая конструкция но она не моя

145
в каких случаях в массивах на php в конце ставится запятая а в каких нет? или она ставится всегда?

в каких случаях в массивах на php в конце ставится запятая а в каких нет? или она ставится всегда?

в каких случаях в массивах на php в конце ставится запятая а в каких нет? или она ставится всегда??

259