如何仅将WordPress REST API请求从旧域名重定向至新域名?
当然可以实现!针对你只想把旧站的WordPress REST API请求重定向到新站点,同时保留旧站其他内容的需求,我整理了几个实用的方案,你可以根据自己的服务器环境来选:
方案1:Apache服务器用.htaccess配置(最常用)
如果你的旧站部署在Apache服务器上,直接修改根目录下的.htaccess文件就能搞定。注意要把这段规则放在WordPress默认的Rewrite规则之前,不然可能被覆盖:
# 仅重定向WP REST API请求到新站点 RewriteEngine On RewriteRule ^wp-json/(.*)$ http://www.newwebsite.com/wp-json/$1 [R=301,L]
R=301表示永久重定向,对搜索引擎SEO友好;如果只是临时测试,可以改成R=302(临时重定向)。L表示这是最后一条匹配规则,一旦匹配到API请求,就不会再执行后面的规则了。
方案2:Nginx服务器配置
如果旧站用的是Nginx,打开站点的Nginx配置文件,在server块里添加这段规则:
# 匹配所有/wp-json/开头的请求并重定向 location ^~ /wp-json/ { return 301 http://www.newwebsite.com$request_uri; }
^~表示优先匹配这个路径,避免和其他location规则冲突。$request_uri会完整保留原来的API路径参数,比如旧站的/wp-json/wp/v2/posts/123会自动重定向到新站的http://www.newwebsite.com/wp-json/wp/v2/posts/123。
方案3:WordPress代码片段(无需服务器权限)
如果你不想碰服务器配置,也可以直接在WordPress里加代码实现。可以把这段代码添加到主题的functions.php文件,或者创建一个简单的自定义插件:
add_action('init', 'redirect_old_wp_api_to_new_site'); function redirect_old_wp_api_to_new_site() { // 检查当前请求是否是WP REST API请求 if (isset($_SERVER['REQUEST_URI'])) { // 兼容PHP 7及以下版本用strpos,PHP 8+可以用str_starts_with if (strpos($_SERVER['REQUEST_URI'], '/wp-json/') === 0) { $new_api_url = 'http://www.newwebsite.com' . $_SERVER['REQUEST_URI']; wp_redirect($new_api_url, 301); exit; } } }
这段代码会在每次页面请求初始化时,检查请求路径是否以/wp-json/开头,如果是就立即重定向到新站的对应API地址。
几个重要提醒
- 测试阶段建议先用302临时重定向,确认所有API请求都能正确跳转到新站且返回正常数据后,再换成301永久重定向,避免错误重定向影响SEO。
- 确保新站点的WordPress REST API已经配置完成,且内容和旧站一致,避免重定向后出现404或数据不一致的问题。
- 如果你有自定义的API端点(比如
/wp-json/my-custom-api/v1/...),上面的所有方案都能自动覆盖,因为它们都是以/wp-json/开头的请求。
内容的提问来源于stack exchange,提问作者Neil K
相关产品推荐
相关产品推荐

