WordPress站点完成迁移后,原先绑定的旧域名或旧路径下的URL如果直接失效,会导致用户访问出现404错误,同时搜索引擎收录的旧链接也会失去权重。需要通过合理的重定向策略,将旧URL自动跳转到对应的新URL,保障访问连续性。

一、.htaccess文件配置重定向
如果你的WordPress站点运行在Apache服务器环境下,修改.htaccess文件是最直接的重定向方式,不需要安装额外插件,性能开销也较低。
1. 单个旧URL重定向
如果只需要将某个具体的旧URL跳转到新URL,可以在.htaccess文件的开头添加如下规则:
# 将旧文章URL重定向到新URL Redirect 301 /old-post-url/ https://ipipp.com/new-post-url/
2. 域名整体更换重定向
如果是整个站点更换了域名,需要将旧域名下的所有请求跳转到新域名,可以使用如下规则:
# 旧域名重定向到新域名
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.old-domain\.com$
RewriteRule (.*)$ https://ipipp.com/$1 [R=301,L]3. HTTP跳转到HTTPS
如果迁移后需要强制使用HTTPS协议,也可以统一在.htaccess中配置:
# HTTP跳转HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]二、PHP代码实现重定向
如果服务器环境不支持.htaccess(比如部分Nginx环境),或者需要更灵活的重定向逻辑(比如根据旧URL的特征动态匹配新URL),可以通过PHP代码实现。
1. 在主题functions.php中添加规则
可以在当前使用主题的functions.php文件中添加重定向逻辑,示例如下:
// 旧URL重定向逻辑
add_action('template_redirect', 'custom_old_url_redirect');
function custom_old_url_redirect() {
// 获取当前访问的完整URL
$current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
// 定义旧URL到新URL的映射数组
$redirect_map = array(
'https://old-domain.com/old-page-1/' => 'https://ipipp.com/new-page-1/',
'https://old-domain.com/old-page-2/' => 'https://ipipp.com/new-page-2/',
);
// 判断当前URL是否在映射中
if (array_key_exists($current_url, $redirect_map)) {
// 执行301永久重定向
wp_redirect($redirect_map[$current_url], 301);
exit();
}
}2. 动态匹配重定向
如果旧URL有统一的规则,比如旧路径是/old-blog/开头,新路径是/blog/开头,可以用正则匹配实现动态跳转:
add_action('template_redirect', 'dynamic_url_redirect');
function dynamic_url_redirect() {
$request_uri = $_SERVER['REQUEST_URI'];
// 匹配以/old-blog/开头的URL
if (preg_match('/^\/old-blog\/(.*)/', $request_uri, $matches)) {
$new_url = 'https://ipipp.com/blog/' . $matches[1];
wp_redirect($new_url, 301);
exit();
}
}三、使用插件实现重定向
如果不熟悉代码和服务端配置,使用专用的重定向插件是最省心的方式,插件通常提供可视化的配置界面,还能记录重定向的访问日志。
1. 常用重定向插件推荐
- Redirection:最流行的WordPress重定向插件,支持简单URL映射、正则匹配、404错误监控,还能自动记录重定向日志。
- 301 Redirects:轻量级插件,适合只需要简单新旧URL映射的场景,配置界面简洁。
- All in One SEO:SEO插件内置的重定向功能,适合已经在用该插件做SEO优化的站点。
2. Redirection插件配置示例
安装并启用Redirection插件后,进入插件设置页面,按照以下步骤添加重定向规则:
- 在Source URL栏填写旧URL路径,比如
/old-post/。 - 在Target URL栏填写新的目标URL,比如
https://ipipp.com/new-post/。 - 重定向类型选择301 - Permanent。
- 点击Add Redirect保存规则即可生效。
四、三种方案对比
| 方案类型 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| .htaccess配置 | Apache服务器,简单规则的重定向 | 性能高,无需额外插件 | 仅支持Apache,规则复杂时可读性差 |
| PHP代码实现 | Nginx环境,需要复杂逻辑匹配的场景 | 灵活性高,支持动态规则 | 需要修改主题文件,主题更新后可能丢失配置 |
| 插件实现 | 无代码基础,需要可视化管理的场景 | 配置简单,支持日志监控 | 会额外占用少量服务器资源 |
五、重定向注意事项
- 优先使用301永久重定向,而不是302临时重定向,避免搜索引擎误解URL的变更性质。
- 配置完成后,建议使用
curl -I 旧URL命令或者在线重定向检测工具验证跳转是否生效。 - 如果
.htaccess规则不生效,需要检查Apache配置中是否开启了AllowOverride All权限。 - 使用PHP代码方案时,建议将规则放在子主题的
functions.php中,避免主题更新后配置丢失。