В WordPress часто возникает потребность изменить URL страницы или записи. Обычно при смене ссылки движок автоматически создаёт перенаправление 301 с ранее существующего адреса на новый, чтобы сохранить SEO параметры и не потерять посетителей. Однако бывают ситуации, когда нужно изменить URL без создания редиректа — например, для тестирования, специфических кастомизаций или при работе с внутренними ссылками.
В этой статье разберёмся, как изменить URL страницы в WordPress без перенаправления, какие сложности при этом возникают и как их обойти с помощью кода и плагинов. Рассмотрим как на примере стандартных страниц, так и для кастомных типов записей (Custom Post Types).
Почему WordPress создаёт перенаправления при смене URL
По умолчанию WordPress использует механизм canonical redirects — если вы изменяете URL записи (например, в поле «Ярлык»), при переходе по старому адресу посетитель будет автоматически перенаправлен на новый. Это сделано для предотвращения ошибок 404 и сохранения SEO-рейтинга.
Перенаправления реализуются функцией wp_redirect_canonical(), подключённой через хук template_redirect. Она анализирует текущий URL и при несоответствии корректному (canonical) адресу выполняет редирект.
Иногда же требуется отключить это поведение — например, если вы хотите использовать старые URL без редиректа, или у вас есть особые правила маршрутизации.
Как отключить canonical redirects для конкретных страниц
Чтобы не отключать перенаправления по всему сайту, можно сделать это выборочно для определённых URL или типов записей.
Добавим следующий код в файл functions.php вашей темы или в кастомный плагин:
function wpabout_disable_canonical_redirect_for_specific_pages( $redirect_url ) {
if ( is_page( array( 'old-page-slug', 'another-old-page' ) ) ) {
return false; // Отключаем редирект
}
return $redirect_url;
}
add_filter( 'redirect_canonical', 'wpabout_disable_canonical_redirect_for_specific_pages' );Здесь функция проверяет, если текущая страница — одна из указанных в массиве, то возвращается false, что отменяет перенаправление.
Это простой способ отключить canonical redirect для конкретных страниц, и при этом сохранить редиректы на остальном сайте.
Изменение URL страницы без перенаправления: настройка постоянных ссылок
Изменить URL страницы можно через админку — в редакторе изменить поле «Ярлык». Но при этом WordPress создаст редирект. Чтобы этого не случилось, кроме отключения редиректа, нужно также убедиться, что старая ссылка не ведёт на 404.
Например, если вы хотите, чтобы страница была доступна по новому адресу /novyj-url/, но при этом старый URL /staryj-url/ тоже работал и не редиректил, то нужно:
- Изменить slug страницы на новый в редакторе.
- Отключить редирект canonical для этой страницы (как описано выше).
- Добавить правило переопределения в
functions.php, которое будет обрабатывать старый URL и выводить нужную страницу без редиректа.
Пример добавления rewrite правила и перехвата запроса:
function wpabout_add_custom_rewrite_rule() {
add_rewrite_rule('^staryj-url/?$', 'index.php?pagename=novyj-url', 'top');
}
add_action('init', 'wpabout_add_custom_rewrite_rule');
function wpabout_flush_rewrite_rules_on_activation() {
wpabout_add_custom_rewrite_rule();
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'wpabout_flush_rewrite_rules_on_activation' );Этот код добавляет правило, которое перенаправляет запросы с /staryj-url/ на страницу с ярлыком novyj-url без редиректа браузера. То есть пользователь увидит старый URL в адресной строке, но содержимое будет от новой страницы.
Обратите внимание: после добавления правил нужно обновить постоянные ссылки (через «Настройки» → «Постоянные ссылки») или вызвать flush_rewrite_rules().
Как работать с кастомными типами записей и URL
Для кастомных типов записей (CPT) ситуация аналогична, но требует более внимательного управления rewrite правилами.
Например, если у вас есть CPT с slug portfolio и вы хотите изменить URL конкретного элемента, но оставить старый адрес рабочим без редиректа, то придется создавать дополнительные rewrite правила.
Пример для CPT:
function wpabout_add_cpt_custom_rewrite() {
add_rewrite_rule('^portfolio/old-project/?$', 'index.php?portfolio=project-new-slug', 'top');
}
add_action('init', 'wpabout_add_cpt_custom_rewrite');Так вы сможете сохранить доступ по старому адресу без редиректа, одновременно меняя URL записи.
Не забудьте сбросить правила после добавления.
Полезные плагины для управления URL и редиректами
Если не хочется писать код, можно использовать проверенные плагины:
- Redirection — позволяет управлять 301 и 404 редиректами, есть возможность отключать или настраивать перенаправления.
- Permalink Manager Lite — даёт гибкий контроль над URL страниц, записей и CPT, можно править адреса без создания редиректов.
- Safe Redirect Manager — простой плагин для управления переадресациями с тонкой настройкой.
Для задачи отключения canonical redirect можно также использовать плагин Disable Canonical Redirects, но он отключит редиректы по всему сайту, что может быть нежелательно.
Советы по SEO при изменении URL без редиректа
Отключение редиректов при смене URL — рискованная практика с точки зрения SEO. Поисковые системы могут считать старые URL битой страницей, что негативно скажется на ранжировании.
Если вы всё же решаете менять URL без редиректов, обязательно:
- Разместите внутренние ссылки на новый URL, чтобы избежать переходов по старым адресам.
- Добавьте канонические теги
<link rel="canonical" href="новый URL" />на старые страницы, чтобы указать поисковикам на основной адрес. - Используйте инструменты типа Google Search Console для отслеживания 404 ошибок и корректировки.
Пример добавления канонического тега для старого URL в functions.php:
function wpabout_add_canonical_tag() {
if ( is_page('staryj-url') ) {
echo '<link rel="canonical" href="' . home_url('/novyj-url/') . '" />';
}
}
add_action('wp_head', 'wpabout_add_canonical_tag');Выводы и рекомендации
Изменять URL страниц в WordPress без перенаправлений можно, но это требует грамотного подхода: отключения canonical redirect, добавления кастомных правил перезаписи и контроля SEO параметров.
Если цель — тестирование или особые настройки, описанные методы помогут добиться желаемого результата. Для обычных случаев лучше использовать стандартные перенаправления 301 для сохранения позиций сайта в поиске.