使用/CATEGORY将类别重定向到url

时间:2015-10-20 作者:ronnyrr

我想将每个类别页面重定向到前面的URL/category.例如我想要/blog 重定向到/类别/博客

为什么?出于某种原因/blog 得出与相同的结果/category/blog, 但是如果你要访问/写博客,导航结构就不再起作用了。博客帖子的下一页将是/blog/page/2 而不是/category/blog/page/2. 第一个示例返回404页。

我的永久链接结构设置为/%category%/%postname%/ 在permalink页面上,我将categorybase设置为“categorie”,Dutch表示category(所以请将上面的每个类别都读为categorie haha)。

在互联网上的某个地方,我确实找到了以下代码。不幸的是,此代码导致重定向循环:

add_filter(\'term_link\', \'term_link_filter\', 10, 3);
function term_link_filter( $url, $term, $taxonomy ) {
    if ( is_category( \'blog\' ) ) {
        $url = site_url( \'/categorie/blog\' );
        wp_safe_redirect( $url, 301 );
        exit;
    }

    return $url;
}
希望有人知道一个解决方案。

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

您的代码工作正常,但代码的逻辑错误。您正在这样做:如果我们在“博客”类别中,请重定向到“博客”类别。所以,如果你转到博客类别,你将永远被重定向。你应该仔细考虑一下/blog url为,并进行适当的检查。

无论如何,当处理301重定向时,我更愿意尝试。htaccess优先。如果可以通过。htaccess,去做吧;您将节省服务器资源,因为重定向发生在加载任何PHP代码之前。

试试你的这个。htaccess:

RedirectMatch 301 ^/blog(.*)$ http://example.com/category/blog$1
上面的代码执行以下操作:如果url以/blog(any-string-here), 重定向到/category/blog(any-string-here) 带有301 HTTP状态代码。

如果你想抓住/blog/category/blog:

RedirectMatch 301 ^/blog$ http://example.com/category/blog

相关推荐

echo a tax term in loop

对于列表中的每个项目,我需要在之后在此循环中回显CPT的一个术语。感谢您的指导或帮助。原始代码来自Stackoverflow。com,因为它起作用了。 <?php $da_place = get_field(\'smart_place\'); //acf field $args = array( \'post_type\' => \'to_do_items\', \'tax_query\' => array