我想将每个类别页面重定向到前面的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;
}
希望有人知道一个解决方案。
最合适的回答,由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