正在删除类别存档URL的简短版本

时间:2013-10-02 作者:JohnCC

我正在关注一个站点,其中有人将/%category%/%postname%配置为永久链接结构。

这样做的一个副作用似乎是,类别存档将同时出现在通常的/category/foo和/foo中。

这样做的一个缺点是它会创建一个重复的页面。另一个问题是,第二个页面上的任何“旧帖子”链接都不会起作用,因为它将指向/foo/page/2,返回404。

有没有办法在不更改永久链接结构的情况下禁用页面的/foo版本?

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

我想可能有一种方法可以从规则数组中删除有问题的重写规则on generate_rewrite_rules, 这将导致我不确定404或WordPress是否会尝试重定向到正确的URI。

或者,我想出了这段代码来检查没有category 并将其重定向到具有category. 这有点粗糙,但可能对你有用。

function wpa_category_requests( $request ){
    if ( ! is_admin()
        && isset( $request->query_vars[\'category_name\'] )
        && ! isset( $request->query_vars[\'name\'] ) ){
        if ( false === strpos( $request->request, \'category\' ) ){
            wp_redirect(
                home_url( \'/category/\' . $request->query_vars[\'category_name\'] . \'/\' ),
                301
            );
        }
    }
}
add_action( \'parse_request\', \'wpa_category_requests\' );

结束

相关推荐

Permalinks not working

我知道,问了无数次,回答了无数次。我一生都找不到我的错误。正在尝试将永久链接设置为使用post name,/%postname%/尝试访问主页以外的任何其他地方都会产生404错误。默认的永久链接设置工作正常。任何帮助都将不胜感激。.htaccess在web根目录中 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\\.ph