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

11

WordPress автоматически исправляет постоянные ссылки (URL), даже если они введены неправильно. Например, WordPress высадит вас, example.com/some-postдаже если вы введете example.com/idontexist/some-postили дажеexample.com/some

Может быть так, что WordPress использует подобный RegEx или некоторый алгоритм сопоставления, который сравнивает справа налево, и если он найдет совпадение, он перенесет вас на страницу, даже если /.*/слева будут левые. Просто предположение! Как WordPress делает это?

Изменить: Я также заметил , что .htaccess проверки файлов для виртуальных файлов / директорий с помощью !fи !dи перенаправляет запрос на index.php к папке блога.

Правин Лобо
источник

Ответы:

6

Функция redirect_canonical в /wp-includes/canonical.php вызывается для любого заданного URL-адреса и будет пытаться наилучшим образом угадать URL-адрес, который хотел пользователь, и перенаправить его туда, когда URL-адрес не существует. Он имеет огромное количество кода, чтобы сделать это для всех видов распространенных ошибок.

эфирное масло
источник
1
Голосовали за "целое огромное количество": D.
Трэвис Норткатт
1

Это довольно просто. WordPress использует оператор LIKE в SQL-запросе, чтобы угадать полный URL-адрес из частичного URL-адреса, когда это страница 404

Проверьте этот код взят из redirect_guess_404_permalink()функции /wp-includes/canonical.php

$where = $wpdb->prepare( 'post_name LIKE %s', $wpdb->esc_like( get_query_var( 'name' ) ) . '%' );
Прамод Джодхани
источник