使用PAGE作为首页,为什么/PAGE/#起作用?

时间:2015-06-17 作者:NotaGuruAtAll

所以我尝试了不同的主题,并确定这是WordPress的东西,而不是主题。

假设我创建了一个标题为“首页”的页面,然后在“首页显示”下的阅读设置中将其设置为首页。

执行此操作后,以下URL将全部显示在首页:

域。com/page/50域。我想这可能会对SEO产生负面的副作用。除此之外,WordPress不应该在这些URL上抛出404吗?

1 个回复
SO网友:gmazzap

在WordPress中,您有三种主要的“视图”:

“标准”主页只是一个有点特殊的归档页面,一个静态首页一个有点特殊的单一页面。

使用端点时page 在首页url中,WordPress在内部设置查询变量page 到一个特定的数字(可能是paged 对于常规页面)。

问题是paged 是一个查询变量,在WordPress中,它只对存档和搜索视图有意义,事实上,数据库中没有对单个结果分页。

简而言之,WordPress承认url在形式上是正确的,但忽略它设置的查询变量。

事实上,如果您尝试对任何其他页面(不是头版)执行相同的操作,则行为是相同的。

简而言之,这些URL即使不是“规范”URL,也不会产生404,因为它们对应于一组有效的查询变量,返回一个非空结果。

对于单数帖子,这不会发生,因为WordPress对帖子会重定向“规范”url。

WordPress对首页和普通页的处理方式不同,因为很多人将其用作帖子归档的入口点,在这里分页非常有意义。

因此,在成本/收益平衡中,WordPress首选默认情况下不会将页面重定向到其规范url。

即使是因为,关于SEO,这并不是真正有不良影响的事情,除非你有指向主页url的所有web链接/page/xxx 已附加。

在这种情况下,如果这样的URL不再有效,您应该小心301重定向它们。

顺便说一下,您可以强制WordPress对页面和首页应用规范重定向:

add_action(\'template_redirect\', function() {
    if (
        (is_page() && get_query_var(\'paged\'))
        || (
             is_front_page()
             && get_option(\'show_on_front\') === \'page\'
             && get_query_var(\'page\')
        )
    ) {
        wp_safe_redirect(get_permalink(get_queried_object_id()), 301);
        exit();
    }
}, 99);
作为替代方案,您还可以在这些URL上强制404。在我看来,301重定向对搜索引擎优化没有真正的好处,但对不再使用该页面的用户有负面影响。

顺便说一下,代码是这样的:

add_action(\'template_redirect\', function() {
    if (
        (is_page() && get_query_var(\'paged\'))
        || (
             is_front_page()
             && get_option(\'show_on_front\') === \'page\'
             && get_query_var(\'page\')
         )
    ) {
        global $wp_query;
        $wp_query->set_404();
        status_header( 404 );
        nocache_headers();
        locate_template(array(\'404.php\', \'index.php\'), true);
        exit();
    }
}, 99);

结束

相关推荐