将固定链接结构从/%postname%/更改为/%ategory%/%postname%/之后捕获404

时间:2013-04-04 作者:prashant

不久前我创建了一个网站,几天后一些帖子被搜索引擎编入了索引。今天我改变了permalink结构/%postname%//%category%/%postname%/.

之后,当人们从搜索引擎访问我的网站时404 page not found error 出现。我想将所有旧URL更改为新的类别基本URL,而不出现任何404错误。

我该怎么做<顺便说一下,我使用的是Yoast插件。

2 个回复
SO网友:fuxia

这是因为WordPress现在将您的旧帖子名称读取为类别名称,但它找不到该类别。

解决方案:过滤器404_template 并尝试找到帖子及其永久链接。然后重定向。

<?php  # -*- coding: utf-8 -*-
/* Plugin Name: Redirect to category */

add_filter( \'404_template\', \'t5_redirect_to_category\' );

function t5_redirect_to_category( $template )
{
    if ( ! is_404() )
        return $template;

    global $wp_rewrite, $wp_query;

    if ( \'/%category%/%postname%/\' !== $wp_rewrite->permalink_structure )
        return $template;

    if ( ! $post = get_page_by_path( $wp_query->query[\'category_name\'], OBJECT, \'post\' ) )
        return $template;

    $permalink = get_permalink( $post->ID );

    wp_redirect( $permalink, 301 );
    exit;
}

SO网友:Griffin

您需要将301个重定向从旧页面URL添加到新页面URL。

此插件应该可以完成您想要的功能:http://wordpress.org/extend/plugins/redirection/

因为它检测到永久链接的更改并自动添加重定向,所以您需要切换回旧的永久链接结构,激活插件,然后将永久链接更新到新结构。

希望这有帮助。

结束

相关推荐

Sort categories by meta value

如何制作一个类别列表,每个类别中有4篇最后的帖子,其中每个类别都按meta\\u值排序。例如,不按meta\\u值排序的模板是http://pastebin.com/AeH6vx9b它仅显示父类别。几天来,我在搜索与类别相关的额外字段,但找不到可行的内容。This is my best search result. 这跟我有什么关系?我不明白。有可能做我想做的事吗?