Кажется, у меня возникла странная проблема, которую я обнаружил почти на каждом другом сайте WordPress.
Предположим, вы установили для своего блога статическую страницу WP /myhome
, И у вас есть отдельная страница для блога /blog
,
Теперь это работает нормально и должно быть:
/blog
/blog/page/2
/blog/page/3
/blog/page/4
Но для всех других страниц, например /about-us
эти ссылки также работают:
/about-us/page/2
/about-us/page/3
/about-us/page/4
И показать содержание /about-us
стр.
Моя проблема в том что /about-us/page/2
в идеале следует перенаправить на /about-us
(это канонический URL), поскольку на любой другой странице нет нумерации страниц, кроме /blog
,
Что мне там не хватает? Похоже, что это происходит почти на всех сайтах, которые я проверял, и это действительно разочаровывает с точки зрения SEO.
Это по замыслу и намеренно. Переписывания WordPress с годами становятся все более сложными, и многие плагины используют page
конечная точка для страницы (обычно с шаблоном и пользовательским запросом) — перенаправление представляет потенциальный мир боли.
Короче говоря, это не имеет значения в любом случае. WordPress добавляет <link rel="canonical />
для страниц, поэтому не нужно беспокоиться о дубликате контента.
Обновить: Для локализованных ситуаций, в которых вы хотите игнорировать потенциальные риски, это приведет к канонизации всех URL-адресов страниц — обратите внимание, что он не проверяет, действительно ли страница разбита на страницы (т.е. <!--nextpage-->
quicktag) и сломает эту функцию, если вы ее используете.
function wpse_199180_canonical_pages( $wp ) {
if ( ! is_admin() && is_page() && isset( $wp->query_vars['paged'] ) ) {
wp_redirect( get_permalink( get_queried_object() ), 301 );
exit;
}
}
add_action( 'wp', 'wpse_199180_canonical_pages' );
Это не нормальное поведение Worpdress, если для страницы не разрешено разбиение на страницы, он не должен принимать аргумент страницы. Только что протестировано на странице WordPress, /mypage/page/2
дает 404.
Вероятно, это как-то связано с вашей темой и тем, как пост запрошен. Например. Ищу posts_per_page
а также numberposts
в файлах вашей темы и найдите запрос, связанный с вашей страницей. Измените затем значение на -1
чтобы отключить нумерацию страниц.
Еще одно решение было бы перенаправить все разбитые на страницы URL-адреса (кроме блога) — это идет в functions.php:
function redirect_pagination() {
if(!preg_match('/blog/', $_SERVER['REQUEST_URI'])) {
if(preg_match('/page\/[0-9]+\/?$/', $_SERVER['REQUEST_URI'])) {
$new_url = preg_replace('/(page\/[0-9]+\/?)$/', '', $_SERVER['REQUEST_URI']);
wp_redirect($new_url, 301);
exit;
}
}
}
add_action( 'init', 'redirect_pagination', 1 );