从固定链接规则中排除单个页面

时间:2018-04-10 作者:hsimah

我有一页/video 它上面运行着一个javascript应用程序。javascript读取url片段并加载视频。ie/video/my-first 将加载标题为“我的第一个”的视频。

我的问题是permalinks。WordPress识别多片段url并尝试查找匹配项。我已配置add_rewrite_rule 跳过任何内容^video 这对现场很好。

我实际上需要任何url/video 路由到同一位置/video, /video/one, /video/35/video/really-really-long-slug-with-trailing-slash/. url必须保留,因为我的javascript需要知道slug才能正常工作。

我重写的问题是,Google似乎在此处重新定向,并且不会获取呈现的页面。它将其列为301,永久重定向。

Googlebot type: Desktop (render requested) Redirected on Tuesday, April 10, 2018 at 4:01:40 AM PDT

我不是WordPress开发人员(我编写了javascript应用程序),所以我希望有一种方法可以将视频页面从永久链接中排除。目前它是一个WordPress页面实体,但我在主题中使用一个php页面并通过菜单直接链接到它没有问题。

2 个回复
最合适的回答,由SO网友:hsimah 整理而成

所以,不是WordPress开发人员似乎一直是我的问题。我不知道您可以创建single-{post type}.php 模板和WordPress将使用该页面呈现该帖子类型。这很简单,但我把整个事情都复杂化了。

SO网友:Oleg Butuzov

这是一个复杂的问题。首先,从没有javascript和google机器人的用户的角度来看,它的工作“正常”。我建议以不同的方式解决此问题,而不是使用页面和子页面:

创建,不是页面,而是post type video 具有以下特点:

非公开的可公开查询的无重写的添加查询规则

add_action( \'init\', function() {
    add_rewrite_rule( \'^videos/?\', \'index.php?post_type=video\', \'top\' );
});
<添加自定义解析查询筛选器
add_action( \'init\', function(){
    if ( is_admin() )
        return;
    add_filter( \'parse_query\', function( WP_Query $wp_query) : WP_Query {
        if ( \'video\' === $wp_query->get(\'post_type\')) {
            $wp_query->set(\'nopaging\', true);
        }
        return $wp_query;
    });
});
完成了。嗯,还没做完。您需要在页面应用程序上为视频生成一些数据属性。

结束

相关推荐

How to replace permalinks

我已将wordpress项目导出并导入live server。现在的问题是,我将permalink结构作为“localhost”格式。当我单击网站中的任何链接时,它会将我重定向到localhost。我怎样才能改变这一点?我的htaccess文件如下所示<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /myproject/ RewriteRule ^index\\.php$ - [L] RewriteCo