我似乎在几乎所有其他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的角度来看真的很令人沮丧。
答案 0 :(得分:4)
这是设计和有意的。 WordPress重写多年来变得越来越复杂,许多插件利用页面的page
端点(通常带有模板和自定义查询) - 重定向引入了一个潜在的痛苦世界。
长话短说,无论如何都没关系。 WordPress为页面添加<link rel="canonical />
,因此无需担心重复的内容。
更新:对于您想要忽略潜在风险的本地化情况,这会规范化所有网页网址 - 请注意,它不会检查网页是否实际分页(即{{1}如果您使用它,将会破坏此功能。
<!--nextpage-->
答案 1 :(得分:0)
这不是正常的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 );