Category URL Management

时间:2012-06-16 作者:Average Joe

当您保留类别基础时(也就是说,您不会通过插件将其删除),WordPress确实允许您以两种不同的方式浏览到您的2级深度类别,如下例所示。

比方说,您的类别有一个顶级项目“多媒体”,下面有一个名为视频的子项。

从视觉上看,我们谈论的是这样一种情况;

类别分类法

multimedia
    video
    audio
topics
    science
    politics 
好吧,你可以通过以下两种不同的方式找到那个孩子(视频);

您的站点。com/类别/多媒体/视频或您的网站。com/类别/视频

这里的要点是,无论使用了哪个URL,WP都会将您带到完全相同的页面,并且这里也没有重定向,因此这两个URL都会保留在访问者的浏览器上,就像最初请求的一样。对于任一URL,生成的内容都是相同的。

这对谷歌来说是一个可恶的局面。

谷歌惩罚这类网站是因为你的网站在两个不同的URL下出现了完全相同的内容。(当然,这是因为你碰巧同时使用了两个URL。)当然,没有人会想那么做,但有时你最终会这样做。这个问题就是关于那个案子的。

比方说,你想为你的视频类别选择一个更简单的URL,你只想坚持这个。基本上,您希望URL

您的站点。com/类别/视频

当您使用WordPress附带的自定义菜单功能时,这很容易实现,您可以为您的特定自定义菜单项指定URL。因此,当访问者点击自定义菜单上的视频链接时,他们最终会看到

您的站点。com/类别/视频

目前没有问题。。。

但是,一旦他们从该类别中选择了一篇文章,并且他们最终找到了一篇文章,该文章的元数据显示了“CATEGORIZED in”或“TAGGED by”等内容,他们将看到该视频类别的备选URL。

因此,如果用户单击“分类范围”区域中的视频链接,他们最终得到的URL将是

您的站点。com/类别/多媒体/视频

这样一来,你的SEO排名就上升了。

我的问题是,您在这里使用什么技术,以便WordPress始终使用一个URL,即您在自定义菜单中定义的URL。

我想,类别slug可以做到这一点,但当我检查它时,slug特性只允许我更改URL中的类别术语,而不允许更改它的路径。

如果给我一个选择

视频段塞:/类别/视频

我会完蛋的。

但目前还没有这一选择。当你这样做的时候,你会得到以下的结果

类别视频

这是因为/不是slug的有效字符。

请建议另一种方式,告诉WordPress始终坚持/分类/视频。

在提出显而易见的建议之前,(好吧,跳过“多媒体”,让“视频”成为顶级猫。),让我说,这个建议对我们的情况不起作用。

2 个回复
SO网友:fuxia

您可以筛选\'term_link\'.

只是一个未经测试的想法,直接写入答案字段

add_filter( \'term_link\', \'wpse_55476_categore_ur_filter\', 10, 3 );
function wpse_55476_categore_ur_filter( $termlink, $term, $taxonomy )
{
    if ( \'category\' !== $taxonomy )
    {
        return $termlink;
    }

    // separate the URL
    $parts     = explode( \'/\', $termlink );

    // get the term
    $term_slug = array_pop( $parts );

    $out       = array ();
    $cat_base  = get_option( \'category_base\', \'category\' );

    foreach ( $parts as $part )
    {
        $out[] = $part;

        if ( $part === $cat_base )
        {
            $out[] = $term_slug;
            return implode( \'/\', $out ) . \'/;
        }
    }
}
每次主题或插件调用生成类别链接的WP函数时,都应该执行类似的操作,因为所有这些函数都将其工作委托给get_term_link() 调用此筛选器的位置。

所以…第一部分解决了,第二部分的问题是:如果有人调用长URL会发生什么?你可以\'wp\' 并执行相同的检查(old example). 可能太慢,因此短期链接应存储在术语元字段中。哦,等等…没有桌子,因为…嗯…decisions. :)<但是我们有some solutions 也是为了这个。这里不需要重复这些。

备选方案:。htaccess和RedirectMatch,如果您只有一组受控且有限的子类别(并且不想更改category 零件)使用Apache’s mod_alias 还有一个简单的重定向.htaccess.httpd.conf:

RedirectMatch Permanent ^/category/([^/]*)/(audio|video|smell)/(.*) /category/$2/$3
The(audio|video|smell) 是您的子类别列表。此规则应高于WordPress重写规则。

SO网友:Damien

这里有3种可能的选择。。。

如果你还没有。。。转到安装WordPress SEO by Yoast此插件允许您设置规范链接,并允许您控制删除谷歌等索引中的许多重复类别链接。

这个插件应该可以解决索引和SEO方面的大多数问题。

  1. 。htaccess和重写规则,以阻止人们访问类别/子类别/帖子标题http://perishablepress.com/category/web-design/htaccess/ 有很多很棒的想法和代码示例

    安装一个像样的XML站点地图插件,并阻止类别和标记存档。笔记Yoast的SEO插件具有以下配置设置,即1的优点。它很简单,不需要后端编码。

    2的好处是它可以帮助您通过编程解决所有规范url问题。但是,您仍然需要3才能停止出现重复的内容条目

    关键是。。。谷歌不会因为你搜索引擎不好而惩罚你。。。如果你对所有这些都不熟悉,那么最好的方法就是首先减少谷歌中重复内容链接的数量。

    希望有帮助?

    达米恩

结束

相关推荐

带有show_count的WP_LIST_CATEGORIES,特定类别除外

我想显示显示的所有子类别的帖子数量,但不显示其父类别的帖子数量。或者,由于只有3个父类别,此排除可以是每个类别id。有没有办法做到这一点?此外,不幸的是,数字没有包装在任何元素中,所以我想不出任何方法来隐藏它。