自定义固定链接结构导致分页时为404

时间:2014-12-22 作者:Jornes

我有一个永久性的问题。根据您的信息,一个网站中有几个不同的类别,一个类别中有许多帖子。

我的永久链接设置为:

自定义结构:/%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/”,其余的都可以。

希望这个问题不会通过推荐的插件得到解决。因为,我不想网站太重。

有什么建议吗?

5 个回复
最合适的回答,由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网友:Avinash Shukla

这对我很有用,请在函数中添加此函数。wordpress中的php页面,此函数将更改您的喜好:

上一页:http://www.example.com/advice/category/category_name/page/3/

收件人:http://www.example.com/advice/category_name/page/3/

function remove_category_slug_url($query_string){ 
    if ($query_string[\'name\'] == \'page\' && isset($query_string[\'page\'])) {
        unset($query_string[\'name\']);
        list($delim, $page_index) = explode(\'/\', $query_string[\'page\']);
        $query_string[\'paged\'] = $page_index;
    }      
    return $query_string;
}
add_filter(\'request\', \'remove_category_slug_url\');

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在考虑新规则的情况下重建重写规则

SO网友:Jhony Penagos

这对我有用。

function remove_page_from_query_string($query_string){ 
   if ($query_string[\'name\'] == \'page\' && isset($query_string[\'page\'])) {
       unset($query_string[\'name\']);
       // \'page\' in the query_string looks like \'/2\', so i\'m spliting it out
      list($delim, $page_index) = split(\'/\', $query_string[\'page\']);
      $query_string[\'paged\'] = $page_index;
   }      
   return $query_string;
} 
add_filter(\'request\', \'remove_page_from_query_string\');

SO网友:robireland

对于其他有此问题的人,在分页页面上使用重定向时,以下内容对我很有用:

在永久链接中,更改:/%类别%/%postname%/

/%类别%/%postname%

请注意,删除了结尾的正斜杠“/”。

抢劫

结束

相关推荐

List all blog categories

我已经创建了一个博客插件。我的博客中有博客类别。我想获得所有博客类别的列表,并将其列在我的www.domain中。com/blogs/page。我的博客类别名称为“blogcategory”。我不知道如何在list-category 作用我是wordpress开发的nooby。