wordpress外贸网站维护:文章批量设置301跳转

一个网站的url格式和规则一定在建站之初就应该确定好,后期也不建议随便修改,否则网站中可能出现大量的404页面,处理起来很麻烦的。当然,如果你不在乎SEO,那就随便改,可话又说回来了,但凡能想到修改url格式的人多半又比较关心网站SEO优化。

比如近期应客户要求,给网站修改文章的url格式,在所有文章的slug前加上一个固定的blog,虽然看不太懂,但收了钱就要办事。

修改方法:在wordpress网站后台的固定链接中修改为【blog/%postname%/】即可。

wordpress外贸网站维护:文章批量设置301跳转-悦然跨境出海

修改之后问题来了,原来已收录的文章打不开了,显示404,因为Url都变了。如果网站未收录,可以不用管,但有收录的话就需要做一下301跳转。

这里提供两个方法

使用插件

有很多SEO插件都自带了免费的301跳转功能,比如rank math seo,slim seo等,但一般只能手动一个个链接添加,文章比较多的话,手动就特别累人了。虽然跳转插件一般支持正则表达式,但同样麻烦,而且大多数人都不会写。

使用代码

如果有成百上千篇文章需要跳转,使用代码效率会更高一些,这里直接分享代码如下【供参考】:

function redirect_old_post_urls() {
    // 只处理404请求和文章请求
    if (is_404() || is_singular('post')) {
        global $wp;
        $current_path = trim($wp->request, '/');
        
        // 排除后台、REST API等特殊请求
        if (is_admin() || wp_doing_ajax() || wp_doing_cron() || defined('REST_REQUEST')) {
            return;
        }
        
        // 尝试获取当前请求对应的文章ID
        $post_id = 0;
        if (is_singular('post')) {
            $post_id = get_queried_object_id();
        } elseif (is_404()) {
            // 从URL中提取可能的slug
            $potential_slug = basename($current_path);
            
            // 通过slug查询文章
            $post = get_page_by_path($potential_slug, OBJECT, 'post');
            if ($post) {
                $post_id = $post->ID;
            }
        }
        
        // 如果找到有效文章
        if ($post_id) {
            $new_url = get_permalink($post_id);
            
            // 检查新旧URL格式差异
            $old_url = home_url($current_path);
            $expected_new_url = str_replace(home_url(), home_url('/blog'), $old_url);
            
            // 只有当新URL包含/blog/且当前URL不包含时重定向
            if ($new_url && strpos($new_url, '/blog/') !== false && strpos($old_url, '/blog/') === false) {
                // 保留查询参数
                $query_string = $_SERVER['QUERY_STRING'] ?? '';
                if ($query_string) {
                    $new_url = add_query_arg($query_string, '', $new_url);
                }
                
                wp_redirect($new_url, 301);
                exit;
            }
        }
    }
}
add_action('template_redirect', 'redirect_old_post_urls', 5);

根据你自己修改的url格式,blog可以替换为其它。代码可以添加到当前主题的functions.php文件,或者是添加到code snippets之类的插件中。

wordpress外贸网站维护:文章批量设置301跳转-悦然跨境出海

不管使用上面哪种方法跳转,设置之后都需要清空缓存,然后打开检查一下,或者使用工具检测,看它能不能正确跳转。

总结

以上就是今天分享的内容,但我希望大家不会遇到类似的问题😀。网站URL规则一定不要随便修改。

购物车
优惠劵
搜索