Как работает система постоянных ссылок WordPress?

Я php-разработчик, и в настоящее время я разрабатываю CMS/систему блогов. я хочу добавить систему постоянных ссылок, такую ​​как WordPress. Мне любопытно, как WordPress анализирует постоянную ссылку. Например, как получить данные типа id и post name из:

example.com/id/123/post/example/

Короче говоря, я хочу, чтобы система получала id и post name из URL-адреса. Я хочу, чтобы пользователи могли изменять структуру постоянных ссылок, таких как WordPress, используя такие теги, как:

id/%postid%/post/%postname%/

Как получить данные в таких переменных, как $id и $post_name, где значения будут 123 и example? Помогите пожалуйста мне. Заранее спасибо.


person sani    schedule 03.07.2012    source источник


Ответы (2)


В этом вам может помочь общедоступный модуль Apache mod_rewrite. Что вы делаете, так это записываете правила перезаписи внутри файла .htaccess, и через переписывание причудливые структуры, которые обычно напоминают файловую систему, отправляются в файл PHP в качестве параметров $_GET.

Например, если вы хотите заменить что-то вроде: ?reactor=13 на /reactor/13/

Запишите это правило перезаписи в файле .htaccess:

RewriteEngine on
RewriteRule reactor/([0-9]+)/$ index.php?id=$1

Теперь, если вместо index.php вы подтянете /reactor/13/, ваш файл index.php должен увидеть это в $_GET:

Array
(
    [id] => 13
)

Теперь, что касается вашего HTML-кода, вы сами должны создавать URL-адреса и подчиняться продуманной структуре.

Эти правила перезаписи могут сбивать с толку, но они следуют логическому шаблону регулярных выражений.

WordPress использует более сильный подход, чем вставка этих редактируемых файлов .htaccess, куда они отправляют все в WP, а затем WP решает/маршрутизирует остальное через внутренние правила.

person pp19dd    schedule 03.07.2012
comment
Где в исходниках WP он обрабатывает ссылки? Я уверен, что вы правы (созданные правила mod_rewrite очень просты/универсальны), но если бы я мог видеть, где это должно происходить, это помогло бы мне диагностировать странную проблему, с которой я столкнулся. - person jacobq; 17.12.2013
comment
WP на самом деле слишком запутан или абстрактен, чтобы указывать на одно место. Вы можете убедиться в этом, просмотрев github.com/WordPress/WordPress/ - person pp19dd; 17.12.2013

Это зависит от того, какое серверное программное обеспечение вы используете, но если вы планируете использовать свои скрипты на Apache, обычно это предполагает использование чего-то под названием mod_rewrite и, в частности, файла .htaccess.

Я бы порекомендовал начать с чтения учебника по этому вопросу. Как обычно, Google — ваш друг.

person pbeck    schedule 03.07.2012