10 次查询 耗时 0.057 秒
共写了1680个字,约4分钟读完,有4条留言

WordPress对已收录文章的旧链接301重定向到新链接

我们做网站的时候,中途可能会因为各种各样的原因修改文章的固定链接,修改之后导致的最直接后果就是:已收录文章链接失效。

这对于SEO来说将是灾难性的问题,怎么才能把原来已收录文章的URL自动跳转到新设置的URL呢?

下面给大家分享一种301跳转的方法,这个方法很简单,当用户在访问旧链接的时候,会自动301跳转到新链接,这样一来你就可以无忧的更换固定链接格式了,而且对SEO没有大的影响,因为原链接依然有效,而蜘蛛久了也会发现,然后把URL更新到新链接。

全站文章旧链接301跳转新链接函数:

[reply]


$rewrite_config = array();
$rewrite_config['highpriority'] = true ;
$rewrite_config['rewrite'] = array();
$rewrite_config['oldstructure'] = "/%year%/%monthnum%/%postname%/"; //旧链接格式
 
function aoaoao_pm_the_posts($post) {
    global $wp;
    global $wp_rewrite;
    global $rewrite_config;
 
    $rewrite_config['rewrite'] = $wp_rewrite->generate_rewrite_rule($rewrite_config['oldstructure'], false, true, true, true);
    if ($post != NULL && is_single() && $rewrite_config['oldstructure'] != $wp_rewrite->permalink_structure) {
        if (array_key_exists($wp->matched_rule, $rewrite_config['rewrite'])) {
        // ok, we need to generate a 301 Permanent redirect here.
            header("HTTP/1.1 301 Moved Permanently", TRUE, 301);
            header('Status: 301 Moved Permanently');
            $permalink = get_permalink($post[0]->ID);
            if (is_feed()) {
                $permalink = trailingslashit($permalink) . 'feed/';
            }
            header("Location: ". $permalink);
            exit();
        }
    }
    return $post;
}
 
function aoaoao_pm_post_rewrite_rules($rules) {
    global $wp_rewrite;
    global $rewrite_config;
    $oldstruct = $rewrite_config['oldstructure'];
 
    if ($oldstruct != NULL && $oldstruct != $wp_rewrite->permalink_structure) {
        $rewrite_config['rewrite'] = $wp_rewrite->generate_rewrite_rule($oldstruct, false, true, true, true);
        if ($rewrite_config ['highpriority'] == true) {
            return array_merge($rewrite_config['rewrite'], $rules);
        } else {
            return array_merge($rules, $rewrite_config['rewrite']);
        }
    }
    return $rules;
}
add_filter('the_posts', 'aoaoao_pm_the_posts', 20);
add_filter('post_rewrite_rules', 'aoaoao_pm_post_rewrite_rules');

 

[/reply]
我们只需要将上述代码保存到主题的function.php中即可。

加入对话

4条评论

您的电子邮箱地址不会被公开。

  1. aegawg

    谢谢

  2. 111

    感谢

  3. kankan 😛

    1. @麦客孤独 好的