当您保留类别基础时(也就是说,您不会通过插件将其删除),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始终坚持/分类/视频。
在提出显而易见的建议之前,(好吧,跳过“多媒体”,让“视频”成为顶级猫。),让我说,这个建议对我们的情况不起作用。
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重写规则。