Как изменить URL текущей страницы в WordPress без перенаправления

В процессе разработки сайтов на WordPress иногда возникает задача изменить URL текущей страницы без использования перенаправлений (редиректов). Например, вы хотите динамически изменить отображаемый адрес страницы для SEO или UX задач, не меняя при этом фактический URL и не вызывая дополнительного HTTP-запроса.

Почему стандартное перенаправление не всегда подходит

Обычно изменение URL страницы происходит с помощью 301 или 302 редиректа, что приводит к дополнительному запросу и снижению производительности. Кроме того, постоянные перенаправления могут негативно сказаться на SEO и пользовательском опыте.

Задача — изменить URL в браузере, не перезагружая страницу и не вызывая перенаправления. Это возможно с помощью JavaScript и правильной настройки WordPress.

Методы изменения URL без перенаправления

1. Использование JavaScript History API

Современные браузеры поддерживают history.pushState() и history.replaceState(), позволяющие изменить URL в адресной строке без перезагрузки страницы.

Пример кода для WordPress:

function wpassist_change_url_js() {
    if (is_page()) {
        ?>
        <script>
            document.addEventListener('DOMContentLoaded', function() {
                var newUrl = window.location.protocol + '//' + window.location.host + '/novyj-url/';
                history.replaceState(null, '', newUrl);
            });
        </script>
        <?php
    }
}
add_action('wp_footer', 'wpassist_change_url_js');

В этом примере при загрузке страницы URL в адресной строке меняется на /novyj-url/, но страница не перезагружается.

Важно: этот метод не меняет фактический адрес запроса на сервере, поэтому WordPress продолжит считать текущей страницу ту, которая была запрошена изначально.

2. Перезапись (Rewrite) URL на серверном уровне с поддержкой WordPress

Чтобы сервер тоже понимал новый URL, можно добавить правила перезаписи. Это позволит использовать новый адрес, но без перенаправления.

Добавим правило rewrite в WordPress:

function wpassist_add_rewrite_rule() {
    add_rewrite_rule('^novyj-url/?$', 'index.php?pagename=staraya-stranica', 'top');
}
add_action('init', 'wpassist_add_rewrite_rule');

После добавления правила нужно обновить постоянные ссылки, например, зайдя в настройки WordPress — Постоянные ссылки и просто сохранив их.

Теперь запрос к /novyj-url/ будет обрабатываться как запрос к /staraya-stranica/ без перенаправления.

Комбинирование JavaScript и rewrite для идеального результата

Для полной реализации изменения URL без перенаправления рекомендуем комбинировать серверную перезапись и изменение адресной строки через JavaScript. Таким образом, пользователь увидит новый URL, а сервер корректно обработает запрос.

Пример использования вместе:

  • В functions.php добавляем rewrite правило, как показано выше.
  • В footer добавляем JS с history.replaceState() для замены адреса в браузере.

Практические рекомендации и возможные подводные камни

1. Обновление постоянных ссылок — после добавления rewrite правил обязательно обновите их из админки.

2. Совместимость с кешированием — при использовании кеш-плагинов проверьте, что кеш не мешает работе новых URL.

3. SEO — изменение URL без явных редиректов может привести к дублированию контента. Обязательно используйте canonical-теги или другие методы SEO-оптимизации.

4. Проверка на плагинах — некоторые плагины могут конфликтовать с нестандартными URL, протестируйте сайт.

Пример плагина для управления rewrite правилами

Если хотите более гибко управлять правилами, можно использовать плагин Clearfy Pro. Он позволяет настраивать оптимизации URL и перезаписи без правки кода.

Итоговое решение: простая функция для изменения URL текущей страницы

function wpassist_change_current_url() {
    if (is_page('staraya-stranica')) {
        // Добавляем JavaScript для изменения URL в браузере
        ?>
        <script>
            document.addEventListener('DOMContentLoaded', function() {
                var newUrl = window.location.protocol + '//' + window.location.host + '/novyj-url/';
                history.replaceState(null, '', newUrl);
            });
        </script>
        <?php
    }
}
add_action('wp_footer', 'wpassist_change_current_url');

function wpassist_add_rewrite_rule() {
    add_rewrite_rule('^novyj-url/?$', 'index.php?pagename=staraya-stranica', 'top');
}
add_action('init', 'wpassist_add_rewrite_rule');

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

Как настроить автоматическое удаление старого контента в WordPress
02.04.2026
Как использовать REST API в WordPress для создания собственных эндпоинтов
08.11.2025
Как создать и использовать кастомные статусы записей в WordPress
16.11.2025
Как удалить пустые термины в таксономии WordPress с примерами кода
14.02.2026
Как использовать hook pre_get_posts для фильтра записей в WordPress
09.12.2025