旧自定义站点URL重定向到新WordPress站点的实现方案咨询
自定义PHP代码在WordPress中的使用方式
你给出的代码只有参数赋值逻辑,缺少完整的重定向判断和跳转逻辑,正确的集成方式如下:
- 登录WordPress后台,进入「外观-主题文件编辑器」,找到当前主题的
functions.php文件 - 在文件末尾添加如下完整代码(兼容文章和分类的旧链接跳转):
add_action('template_redirect', 'old_site_link_redirect'); function old_site_link_redirect() { // 处理旧文章链接 if (isset($_GET['id']) && is_numeric($_GET['id'])) { $post_id = intval($_GET['id']); // 验证文章ID存在再跳转 if (get_post_status($post_id) === 'publish') { wp_redirect(get_permalink($post_id), 301); exit; } } // 处理旧分类链接 if (isset($_GET['category']) && is_numeric($_GET['category'])) { $cat_id = intval($_GET['category']); $cat_link = get_category_link($cat_id); if ($cat_link) { wp_redirect($cat_link, 301); exit; } } }
- 保存文件即可生效,代码里的301是永久重定向,会告诉搜索引擎旧链接权重转移到新链接,不影响SEO。
PHP重定向和.htaccess重定向对比
.htaccess重定向优势
- 不需要加载WordPress核心程序,响应速度更快,服务器资源消耗更低
- 规则生效层级更高,即使WordPress程序出现故障也不会影响跳转
- 适合你这种参数直接映射的简单规则场景,性能远高于PHP重定向
PHP重定向优势
- 支持复杂逻辑判断,比如需要额外校验文章/分类是否存在、有特殊ID映射关系、需要记录跳转日志等场景
- 不需要修改服务器配置文件,对不了解服务器配置的用户更友好
对你的场景而言,优先选择.htaccess重定向,规则简单且性能更好。
更优的实现方案
方案1:.htaccess配置(最优)
直接在站点根目录的.htaccess文件的WordPress默认规则之前添加如下规则即可:
RewriteEngine On # 旧文章ID跳转 RewriteCond %{QUERY_STRING} ^id=(\d+)$ RewriteRule ^index\.php$ /?p=%1 [L,R=301] # 旧分类ID跳转 RewriteCond %{QUERY_STRING} ^category=(\d+)$ RewriteRule ^index\.php$ /?cat=%1 [L,R=301]
方案2:WordPress重定向插件(最省心)
如果不会修改服务器配置文件,可以直接安装Redirection等WordPress重定向插件,可视化配置上述参数映射规则,不需要写任何代码,还支持跳转日志统计、404错误排查等功能,适合新手使用。
内容的提问来源于stack exchange,提问作者Ayad Attar
相关产品推荐
相关产品推荐

