2010-04-27 5 views
0

Недавно меня интересует структура Post Wordpress.Как Wordpress переписывает URL страницы?

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

post_title 
post_name 
guid 

Это ясно, что они сохраняют название каждой истории в POST_TITLE поле, и пули в post_name, и полный URL-адрес сообщения guild подано.

Но где ад, они переписать эти адреса в пути он появляется в браузерах:

http://localhost/wordpress/about/

Там нет Htaccess правила для этого!

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

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

+0

Ответ определенно находится в файле htaccess. –

+0

pekka Я уважаю ваш ответ, но есть только перенаправление на index.php в файле httaccess –

ответ

5

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

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

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

  1. Посмотрите на пути запроса (например, «/ о /»), что клиент использовал
  2. Извлечение пули из канала запроса («о»)
  3. Посмотрите который пост имеет слизняк «о»
  4. возвращения соответствующего поста
+0

ok, если ваша гипотеза правильная, тогда как, черт возьми, wordpress понимает, какая страница перенаправляется на index.php, в то время как перенаправление происходит в htaccess ?! –

+1

Как я уже сказал, все запросы идут на index.php. – Jeff

+0

Я думаю, что вижу путаницу. Это не перенаправление, это переписывание. Веб-сервер передает все исходные параметры запроса в index.php, включая путь запроса. Отвечает ли это на ваш вопрос? – Jeff

0

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

В основном, как большинство из вас сказали, .htaccess просто перезаписывает все URL-адреса, которые не разрешают фактическому файлу или папке на сервере, до index.php.

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

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

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

Тогда класс WP вместе с WP_Query принимать параметры и обработать запрос.

Смежные вопросы