Каким образом Wordpress переписывает URL-адреса страниц? - PullRequest
0 голосов
/ 27 апреля 2010

В последнее время меня интересует пост-структура Wordpress.

Они используют таблицу с именем ( wp_posts ) и в этой таблице они сохранили 3 связанных поля, таких как:

post_title
post_name
guid 

Понятно, что они сохраняют заголовок каждой истории в поле post_title , и слизни в имя_почты , и полный URL поста в гильдии в поле.

Но где, черт возьми, они переписывают эти URL так, как это выглядит в браузерах:

http://localhost/wordpress/about/

Для этого нет правил htaccess!

Я проверил rewrite.php и не понял ни дюйма?!

мне нужно создать похожие страницы, какие шаги я должен предпринять!?

Ответы [ 2 ]

5 голосов
/ 27 апреля 2010

Файл .htaccess имеет директиву rewrite, которая отправляет все запросы в index.php. Директива rewrite сообщает веб-серверу передать исходный запрос в другое место без перенаправления. Таким образом, index.php получает все исходные параметры, включая путь запроса (часть URL после имени хоста, например, "/about/").

Когда index.php получает запрос, он действует как фронт-контроллер, выясняя, как реагировать на основе URL.

Я никогда не смотрел на внутреннюю работу WordPress, поэтому не могу точно сказать, как они это реализовали, но общая идея для index.php такова:

  1. Посмотрите путь запроса (например, "/ about /"), который использовал клиент
  2. Извлечь слаг из пути запроса ("about")
  3. Посмотрите, в каком сообщении есть слаг "about"
  4. Верните соответствующий пост
0 голосов
/ 02 мая 2010

Многие ваши вопросы будут объяснены, если вы изучите класс WP_Rewrite.

Как правило, как многие из вас сказали, .htaccess просто переписывает все URL, которые не разрешаются, в фактический файл или папку на сервере в index.php.

WordPress сопоставляет URL со списком правил перезаписи, который представляет собой массив ключей и значений. Ключ является регулярным выражением, и значение отображает обратные ссылки на строку параметра.

Например, одно правило перезаписи:

category/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?category_name=$matches[1]&paged=$matches[2]'

Затем класс WP вместе с WP_Query принимают параметры и обрабатывают запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...