Woocommerce分页 - 阻止第1页的301重定向

时间:2017-09-13 10:40:22

标签: wordpress woocommerce http-status-code-301

使用最新版本的Wordpress& Woocommerce。

如果我的商店里有2页产品,那么我在我的分页链接中点击第1页,我获得301重定向,转到 / shop

出于搜索引擎优化的目的,我想禁用301重定向&保持链接在分页链接中,即 / shop / page / 1

这似乎是Woocommerce& amp;的默认行为。这不是我的店主主题所做的事情。

3 个答案:

答案 0 :(得分:3)

我正在建设的网站存在同样的问题。虽然您要求保留 / shop / page / 1 / (没有301),但实际上最好只将 / shop / 作为第一页。否则,您有两个相同的页面提供相同的内容,而Google并不喜欢这些内容。

我采用的方法是将链接的输出更改为 NOT include / page / 1 / 。然后,这将删除301,因为链接是正确的开始。为此,我使用了过滤器paginate_links

add_filter('paginate_links', function($link) {
    $pos = strpos($link, 'page/1');
    if($pos !== false) {
        $link = substr($link, 0, $pos);
    }
    return $link;
});

希望这有帮助。

答案 1 :(得分:2)

您可以使用以下正则表达式仅匹配第1页。SaRiD的答案还将匹配第10-19页,第100+页等,因为它们都以1开头。

add_filter('paginate_links', function ($link) {
    return preg_replace('#page\/1[^\d]#', '', $link);
});

答案 2 :(得分:0)

SaRiD的答案将匹配所有以1开头的页码。

Christopher Geary的答案使用preg_replace,这是不必要的,应尽可能避免。

If you don't need fancy replacing rules (like regular expressions), you should use this function instead of preg_replace().

以下解决方案仅适用于str_replace!如果未禁用WordPress永久链接中的结尾斜杠,并且永久链接中没有其他路径部分/ page / 1/。

add_filter( 'paginate_links', function( $link ) {
    return str_replace( '/page/1/', '/', $link );
});

感谢SaRiD和Christopher Geary以前的回答。