Вопрос или проблема
Я изменил тему в 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, так как поисковые системы обнаруживают большое количество несуществующих страниц.
Возможные решения
-
Использование функции 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.
-
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.