PHP: динамические URL-адреса SEO с родителями / детьми - PullRequest
2 голосов
/ 07 августа 2011

Я боролся с двумя проблемами при создании CMS, где я хочу реализовать дружественные ссылки, используя PHP5 и MySQL 5.

Основная структура базы данных выглядит следующим образом:

-------------------------------
| ID    | PageName | ParentID |
-------------------------------
| 1 | Page1        | 0        |
| 2 | Page2        | 0        |
| 3 | SubPage1     | 1        |
| 4 | SubSubPage1  | 3        |
-------------------------------

Затем я хочу создать URL, как показано ниже:

Страница с идентификатором = 1 будет иметь URL: / Page1
Страница с идентификатором = 3 будет иметь URL: / Page1 / SubPage1
Страница с ID = 4 будет иметь URL: / Page1 / SubPage1 / SubSubPage1

При посещении страницы у меня есть правило .htaccess для отправки URL-адреса на строку запроса, например:? Page = / Page1 / SubPage1 и т. Д.

Как запросить базу данных для сравнения URL-адреса с записями базы данных?

Ответы [ 2 ]

2 голосов
/ 07 августа 2011

Скажите, что ваш маршрут /Page1/SubPage1/SubSubPage1, ваш запрос будет:

SELECT p1.id
    FROM pages AS p1, pages AS p2, pages AS p3
    WHERE p1.PageName = 'SubSubPage1' AND p1.parentID = p2.ID AND
          p2.PageName = 'SubPage1' AND p2.parentID = p3.ID AND
          p3.PageName = 'Page1'
0 голосов
/ 07 августа 2011

Хотите сравнить весь маршрут или просто выбрать данные для реальной страницы?
Если вы хотите выбрать данные только для фактической страницы (последнее имя страницы в вашем URL), вы просто используете взорвать в переменной $_GET['page'] (используйте / в качестве разделителя) и используйте последнее значение массива.
Затем вы просто вставляете это значение в свой SQL-запрос (например, SELECT * FROM pages WHERE PageName = 'yourLastValue')

...