我有一个永久性的问题。根据您的信息,一个网站中有几个不同的类别,一个类别中有许多帖子。
我的永久链接设置为:
自定义结构:/%category%/%postname%/
类别库:。
保存此设置后,我的url将
www.mydomain。com/类别段塞名称/
而不是
www.mydomain。com/类别/类别段塞名称/
我已将博客页面设置为最多显示:在阅读设置下显示8篇文章。当类别页面中的帖子超过8篇时,将显示分页。
我点击了“第2页”,注意到www.mydomain.com/category-slug-name/page/2/
把我带到404错误页面。
最初,任何类别“page2”的url都是www.mydomain.com/category/category-slug-name/page/2/
, 如果url中有“category”作为原始url,则效果很好。否则,将是404错误页。
我主要担心的是,我不希望该类别出现在url中。但我想在我查看所选帖子时,在url中显示类别的slug名称。和“/page/2/”,其余的都可以。
希望这个问题不会通过推荐的插件得到解决。因为,我不想网站太重。
有什么建议吗?
最合适的回答,由SO网友:cybmeta 整理而成
这是完全正常的行为。如果您想删除类别库,则需要编写一些自定义重写规则,而不是我必须说的简单规则。在我看来,删除类别库需要在每个请求中做额外的工作,而这些工作毫无价值,因为这对SEO或更好的网站导航没有任何好处。一些流行的插件,如Yoast的WordPres SEO,在过去有这个选项,并在一段时间前删除了它。但这只是一种观点。
将类别库配置为.
(dot),将此代码放入函数中。php的主题,或者更好的插件,并刷新重写规则(代码来自this post in Daily Web Kit):
add_filter( \'category_rewrite_rules\', \'vipx_filter_category_rewrite_rules\' );
function vipx_filter_category_rewrite_rules( $rules ) {
$categories = get_categories( array( \'hide_empty\' => false ) );
if ( is_array( $categories ) && ! empty( $categories ) ) {
$slugs = array();
foreach ( $categories as $category ) {
if ( is_object( $category ) && ! is_wp_error( $category ) ) {
if ( 0 == $category->category_parent ) {
$slugs[] = $category->slug;
} else {
$slugs[] = trim( get_category_parents( $category->term_id, false, \'/\', true ), \'/\' );
}
}
}
if ( ! empty( $slugs ) ) {
$rules = array();
foreach ( $slugs as $slug ) {
$rules[ \'(\' . $slug . \')/feed/(feed|rdf|rss|rss2|atom)?/?$\' ] = \'index.php?category_name=$matches[1]&feed=$matches[2]\';
$rules[ \'(\' . $slug . \')/(feed|rdf|rss|rss2|atom)/?$\' ] = \'index.php?category_name=$matches[1]&feed=$matches[2]\';
$rules[ \'(\' . $slug . \')(/page/(\\d)+/?)?$\' ] = \'index.php?category_name=$matches[1]&paged=$matches[3]\';
}
}
}
return $rules;
}
SO网友:ghanshyam v
function
remove_category_slug_url($query_string){
if ($query_string[\'name\'] == \'page\' && isset($query_string[\'page\'])) {
unset($query_string[\'name\']);
list($delim, $page_index) = split(\'/\', $query_string[\'page\']);
$query_string[\'paged\'] = $page_index;
}
return $query_string;
}
add_filter(\'request\', \'remove_category_slug_url\');
这对我有用,请在函数中添加此函数代码。wordpress中的php
注意:转到“设置”->“永久链接”,然后单击“保存”。这将使WordPress在考虑新规则的情况下重建重写规则