В WordPress часто возникает необходимость изменить URL страницы, при этом не сохраняя старый адрес и не создавая перенаправлений. Например, вы хотите обновить структуру URL для улучшения SEO или просто из-за изменения контента, но при этом не хотите, чтобы старый URL оставался доступен или вел на новую страницу через 301 редирект.
Почему важно изменить URL без перенаправления
Когда вы меняете URL страницы и оставляете старый адрес доступным, поисковые системы видят дублирование контента, что может негативно сказаться на ранжировании сайта. Использование 301 редиректа считается правильным способом, но в некоторых случаях его нежелательно применять, например, если старый адрес уже заблокирован в индексе или содержит ошибки, или если вы хотите полностью исключить старый URL из индекса.
В таких ситуациях полезно знать, как изменить URL страницы, чтобы старый адрес стал недоступен без создания перенаправления.
Как WordPress обрабатывает URL страниц
WordPress опирается на систему постоянных ссылок (permalinks), которая хранит URL страниц и записей в базе данных в поле post_name таблицы wp_posts. Изменение URL страницы обычно происходит при редактировании поля "Ярлык" (slug) в админке.
Однако, если вы просто измените slug, WordPress автоматически создаст 301 редирект со старого URL на новый. Это происходит благодаря внутреннему механизму, который пытается сохранить переходы и SEO-ссылки.
Чтобы отключить это поведение, нужно вмешаться в процесс формирования правил перенаправления.
Отключаем автоматические редиректы в WordPress
WordPress с версии 5.5 включает функцию wp_old_slug_redirect(), которая отвечает за создание редиректов со старых URL на новые. Чтобы отключить это поведение, можно использовать фильтр redirect_canonical.
Добавьте следующий код в файл functions.php вашей темы или в плагин-муфту:
add_filter('redirect_canonical', 'wpmart_disable_old_slug_redirect', 10, 2);
function wpmart_disable_old_slug_redirect($redirect_url, $requested_url) {
if (is_404()) {
return false; // Отключаем редирект для 404 ошибок
}
return $redirect_url;
}Этот код отключит автоматические canonical редиректы, в том числе и редиректы со старого slug на новый.
Особенности и риски отключения редиректов
Отключение редиректов может привести к появлению 404 ошибок при попытке открыть старый URL. Это хорошо, если вы хотите полностью удалить старый адрес из индекса, но плохо для пользователей, которые могут попасть на несуществующую страницу.
Рекомендуется продумать стратегию обработки таких URL, например, создавать кастомные страницы 404 с полезными подсказками.
Изменение URL страницы без создания редиректа: пошаговое руководство
Шаг 1. Отключаем редиректы
Добавьте код из предыдущего раздела, чтобы отключить автоматические редиректы.
Шаг 2. Изменяем slug страницы
В админке WordPress перейдите в раздел "Страницы" или "Записи", выберите нужную и измените поле "Ярлык" на новый slug. Сохраните изменения.
Шаг 3. Проверяем старый URL
Откройте старый URL в браузере — он должен вернуть ошибку 404, что означает отсутствие перенаправления.
Шаг 4. Обновляем sitemap и внутренние ссылки
Обязательно обновите карту сайта (sitemap.xml), чтобы поисковые системы не индексировали старые URL. Также проверьте и исправьте все внутренние ссылки, ведущие на старый адрес, чтобы избежать ошибок.
Улучшения SEO при изменении URL без редиректа
Хотя удаление редиректа может привести к потере ссылочного веса со старого URL, в ряде случаев это оправдано, например, при смене тематики страницы или удалении устаревшего контента.
Для минимизации негативного эффекта рекомендуется:
- Обновлять внутренние ссылки;
- Удалять старые URL из индекса через Google Search Console;
- Использовать мета-теги
noindexдля старых страниц, если они доступны; - Обеспечивать качественный и актуальный контент на новых страницах.
Пример использования плагина Clearfy для управления редиректами
Если вы используете плагин Clearfy, в нем есть опции для управления редиректами и SEO оптимизацией. Вы можете легко отключить автоматические редиректы и настроить индивидуальные правила поведения для URL.
Это особенно удобно, если вы не хотите прописывать код вручную и предпочитаете наглядный интерфейс.
Альтернативный способ: программное изменение slug с отключением редиректа
Если вы хотите программно изменить URL страницы и при этом отключить редирект, можно использовать следующий пример кода:
function wpmart_change_page_slug_no_redirect($post_id, $new_slug) {
remove_filter('redirect_canonical', 'wp_old_slug_redirect'); // Отключаем редирект старого slug
wp_update_post([
'ID' => $post_id,
'post_name' => $new_slug
]);
add_filter('redirect_canonical', 'wp_old_slug_redirect'); // Восстанавливаем фильтр
}
// Использование:
wpmart_change_page_slug_no_redirect(123, 'novyj-slug');В этом коде мы временно отключаем фильтр редиректа, изменяем slug страницы и возвращаем фильтр обратно. Таким образом, редирект срабатывает только для остальных страниц.
Выводы и рекомендации по изменению URL без редиректа
Изменение URL страницы без перенаправления — редкая, но полезная задача в WordPress. Правильно реализованное решение поможет избежать дублирования и сохранить чистоту индекса поисковых систем.
Всегда анализируйте, нужен ли редирект в вашем случае, и если решите отключать его, обязательно контролируйте доступность и состояние старых URL. Используйте кодовые решения или плагины, такие как Clearfy, для удобства управления.