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

时间:2015-08-18 07:40:34

标签: php wordpress .htaccess canonical-link

我似乎在几乎所有其他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(这是规范网址),因为除/blog之外的任何其他网页都没有分页。

我在那里错过了什么?这似乎发生在我检查的几乎所有网站上,从SEO的角度来看真的很令人沮丧。

2 个答案:

答案 0 :(得分:4)

这是设计和有意的。 WordPress重写多年来变得越来越复杂,许多插件利用页面的page端点(通常带有模板和自定义查询) - 重定向引入了一个潜在的痛苦世界。

长话短说,无论如何都没关系。 WordPress为页面添加<link rel="canonical />,因此无需担心重复的内容。

更新:对于您想要忽略潜在风险的本地化情况,这会规范化所有网页网址 - 请注意,它不会检查网页是否实际分页(即{{1}如果您使用它,将会破坏此功能。

<!--nextpage-->

答案 1 :(得分:0)

这不是正常的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 );