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

Вопрос или проблема

У меня есть родительская страница с URL

example.com/the-boats

И затем дочерние страницы, например:

the-boats/story
the-boats/cast
the-boats/articles
и т. д...

Многие посетители вводят

example.com/boats
example.com/cast

Поэтому, когда они это делают, я хочу перенаправить их на

/the-boats
/the-boats/story
и т. д...

Я не могу понять, как это сделать. Я попробовал 3 стратегии до сих пор

function custom_rewrite_basic() 
{

add_rewrite_rule('^boats/?$',   'index.php?pagename=the-boats/$matches[2]', 'top'); 
flush_rewrite_rules();
}
add_action('init', 'custom_rewrite_basic');

и…

add_filter('redirect_canonical', 'my_redirect_canonical', 10, 2);
function my_redirect_canonical($redirect_url, $requested_url) {
  if ( $requested_url == 'https://example.com/boats') { 
    $redirect_url="https://example.com/the-boats";
}
return $redirect_url;
}

А также я попробовал использовать плагин Redirection.

Теперь то, что происходит в каждом случае, это то, что перенаправляет на контент

/the-boats

НО URL остается
/boats

…что не хорошо. Еще хуже, когда я ввожу

/boats/story

…он все равно перенаправляет на контент

/boats

…и еще хуже 😀 похоже, это сбивает пермалинки, так что когда я убираю любой из этого кода, мне нужно восстанавливать пермалинки, чтобы исходные ссылки, начинающиеся с ‘the-boats’, снова работали.

Я использую Yoast SEO ‘бесплатный’, если это как-то влияет на это.

Так что… что я делаю не так? Как заставить перенаправления работать правильно И чтобы URL в адресной строке отображался правильно?

Решает ли это простое правило .htaccess вашу проблему?

RewriteRule ^/boats/(.*)$ https://www.example.com/the-boats/$1 [R=301,NC,L]

.

Ответ или решение

Для решения вашей проблемы с перенаправлением URL на родительскую страницу и её дочерние страницы, следует использовать правильные методы редиректа, которые обеспечивают изменение адреса в строке браузера, а также корректную работу с умными URL-адресами. Ниже представлена последовательность действий, которые помогут вам решить эту задачу.

1. Понимание проблемы

Вы хотите перенаправить пользователей с URL, которые они вводят (например, example.com/boats или example.com/cast), на правильные адреса с учётом родительской страницы (example.com/the-boats и дочерних). Однако текущие стратегии не работают так, как вам нужно, обеспечивая только отображение контента без изменения самого URL.

2. Использование .htaccess для редиректа

Вместо использования PHP-функций для перенаправления, лучше применять правила переписывания в .htaccess файле. Это позволит сразу корректировать адрес в строке браузера. Попробуйте добавить следующие правила в ваш .htaccess файл:

RewriteEngine On
RewriteBase /

RewriteRule ^boats$ /the-boats [R=301,L]
RewriteRule ^boats/(.*)$ /the-boats/$1 [R=301,L]

3. Пояснение правил

  • RewriteEngine On: Включает модуль модификации URL.
  • RewriteBase /: Указывает базовый путь для всех последующих правил.
  • RewriteRule ^boats$ /the-boats [R=301,L]: Перенаправляет основную страницу /boats на /the-boats с кодом 301 (постоянное перенаправление).
  • *`RewriteRule ^boats/(.)$ /the-boats/$1 [R=301,L]**: Перенаправляет любые дочерние страницы (/boats/…) к соответствующим дочерним URL (/the-boats/…`).

4. Обновление параметров перенаправления

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

5. Важно помнить о кешировании

После изменения .htaccess, обязательно очистите кеш вашего сервера и браузера. Иногда кеширование может влиять на тестирование правил перенаправления.

6. Проверка работы редиректа

После внесения изменений, проверьте, что перенос работает правильно, вписывая в адресную строку:

  • example.com/boats — должен перенаправлять на example.com/the-boats
  • example.com/boats/story — должен перенаправлять на example.com/the-boats/story

7. Вывод

Следуя вышеупомянутым инструкциям, вы сможете эффективно перенаправить URL-адреса своих страниц так, чтобы они корректно отображались, избегая проблем с контентом и обеспечивая хорошую SEO оптимизацию вашего веб-сайта. Рекомендуется также проводить регулярные проверки на наличие различных типов ошибок, чтобы поддерживать сайт в оптимальном состоянии.

Оцените материал
Добавить комментарий

Капча загружается...