Изменение количества постов на странице вызывает ошибку 404 для пагинации. Нужен редирект в правилах htaccess.

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

Я изменил тему в WordPress и изменил настройку “число записей на странице” в “Чтение”, потому что хочу отображать больше записей на страницах архивов. Я использую пагинацию на архивах, поэтому много страниц исчезло. Теперь инструменты для вебмастеров Google показывают мне много ошибок 404.

Например, /author/max/page/150/ теперь возвращает 404. Таких страниц много в различных папках (/author/, /category/ и т.д.)

Я не могу просто перенаправить /page/, так как (например) /author/max/page/100/ — это действительная страница.

Что я хотел бы сделать, так это сказать: “если */page/xxx = 404, то перенаправить на /page/”, или что-то подобное, но я не уверен, как действовать дальше.

Я думаю, мне нужно перенаправить ошибки 404 на рабочую страницу с помощью правила htaccess.

Я нашел решение без использования htaccess, но с использованием функции WordPress wp_redirect. Скопируйте и вставьте в functions.php

function redirect_paginated_404() {
    if (is_404()) {

       $url = $_SERVER['REQUEST_URI']; //читаем URL
       $search="/page/"; //выбираем слово из URL

       if ( strpos( $url, $search ) !== false ) { //если я нахожу строку /page/

       //ищем строку /page/ в URL и удаляем все после нее, что бы удалить неверный номер страницы
          $short = substr($url, 0, strpos( $url, $search)); 

          wp_redirect( $short, '301' ); // функция перенаправления на первую страницу категории
                     exit;
                }
            }
        }
         add_action('template_redirect', 'redirect_paginated_404');

На самом деле, я не знаю, повредит ли это SEO или нет, но перенаправление работает хорошо. Что вы об этом думаете? Лучше оставить ошибку 404 или я могу использовать что-то подобное?

источник

.

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

Изменение количества постов на странице в WordPress может привести к проблемам с пагинацией и, как следствие, к возникновению ошибок 404. Похоже, что вы столкнулись с этой ситуацией после смены темы и изменения настроек отображения постов. Давайте разберёмся с решением, которое вы упомянули, и оценим его с точки зрения SEO.

Проблема

Когда вы изменили количество постов на странице в настройках WordPress, некоторые пагинации, которые ранее были действительными, перестали работать. Например, URL адреса, такие как /author/max/page/150/, теперь возвращают ошибку 404. Это может негативно сказаться на вашем SEO, так как поисковые системы обнаруживают большое количество несуществующих страниц.

Возможные решения

  1. Использование функции wp_redirect:
    Вы предоставили решение, которое подразумевает использование функции wp_redirect() для перенаправления пользователей с несуществующих страниц на действительные. Давайте рассмотрим этот код подробнее:

    function redirect_paginated_404() {
       if (is_404()) {
           $url = $_SERVER['REQUEST_URI']; // Чтение текущего URL
           $search = "/page/"; // Слово для поиска в URL
    
           if (strpos($url, $search) !== false) { // Проверка наличия строки /page/
               $short = substr($url, 0, strpos($url, $search)); // Удаление всего после /page/
               wp_redirect($short, '301'); // Перенаправление на первый page
               exit;
           }
       }
    }
    add_action('template_redirect', 'redirect_paginated_404');

    Этот код логично решает проблему: он автоматически перенаправляет запросы, если страница не найдена, убирая некорректные номера страниц. Однако важно учитывать, как это повлияет на SEO.

  2. SEO-аспекты:

    • 301 редиректы: Использование 301 редиректов позволяет передать часть «веса» страницы, что поможет сохранить вашу позицию в поисковых системах. Однако стоит быть осторожным с количеством перенаправлений и постарайтесь избегать его чрезмерного использования.
    • Потеря контента: При перенаправлении на первую страницу категории пользователи могут пропустить контент, который они искали. Это может привести к увеличению показателя отказов.
    • Обновление графика индексации: Поисковые системы могут требовать времени для повторного обхождения и индексации всех страниц после изменений, что может привести к временной потере трафика.

Пункт о .htaccess

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

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*/page/)([0-9]+)/?$ $1  [R=301,L]

Эти правила проверяют, есть ли запрашиваемый файл или директория. Если нет, происходит перенаправление на базовый URL. Однако такой подход требует тщательной проверки, чтобы исключить потенциальные конфликты с другими правилами.

Заключение

Ваше текущее решение с использованием wp_redirect() корректно и эффективно, но важно следить за пользователями и поисковыми системами, чтобы избежать ухудшения показателей. Также стоит рассмотреть возможность использования кеширования и оптимизации структуры URL, чтобы минимизировать возникновение 404 ошибок в будущем.

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

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

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