繁体   English   中英

Wordpress将非类别页面/ page / nnn重定向到其Canonical URL

[英]Wordpress Redirecting Non Category Pages /page/nnn to their Canonical URLs

我似乎在几乎所有其他Wordpress网站上都找到了一个奇怪的问题。

假设您已将Blog主页设置为静态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_pagenumberposts ,找到与您的页面相关的查询。 然后将值更改为-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 );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM