WordPress, перенаправляющий Non Category Pages / page / nnn на их канонические URL

Кажется, у меня возникла странная проблема, которую я обнаружил почти на каждом другом сайте 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.

3

Решение

Это по замыслу и намеренно. Переписывания 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' );
4

Другие решения

Это не нормальное поведение 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 );
0

По вопросам рекламы [email protected]