如何实现foo.example部署PHP7新WordPress,foo.example/bar指向PHP5.2旧站点?
实现 foo.example/bar 访问遗留PHP5.2 WordPress博客的方案
你的场景是典型的跨服务器路径代理需求,下面是具体的落地步骤,分主站服务器配置和遗留WordPress设置两部分来操作:
一、主站服务器(foo.example,PHP7环境)配置反向代理
假设主站用的是Nginx(绝大多数WordPress环境的首选),需要在foo.example的Nginx配置文件中添加反向代理规则:
server { listen 80; listen [::]:80; server_name foo.example; # 保留主站原有配置(比如根目录指向、PHP处理规则等)... # 新增匹配/bar路径的反向代理规则 location ^~ /bar { # 把请求转发到遗留博客的服务器地址(可以是IP地址,也可以直接用bar.foo.example) proxy_pass http://bar.foo.example; # 关键配置:修改请求头,让遗留WP能识别正确的访问路径和客户端信息 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 重写URL:去掉/bar前缀后再转发给遗留WP(因为遗留WP本身部署在子域名的根目录) rewrite ^/bar/(.*)$ /$1 break; } }
如果主站用的是Apache,需要先启用mod_proxy和mod_proxy_http模块,然后在主站的.htaccess文件或虚拟主机配置中添加:
ProxyPass "/bar" "http://bar.foo.example/" ProxyPassReverse "/bar" "http://bar.foo.example/" ProxyPreserveHost On
二、遗留WordPress博客(PHP5.2环境,bar.foo.example)适配路径修改
因为遗留WP原本是通过子域名访问的,现在要适配/bar路径,需要调整WP的核心配置和数据库内容:
- 修改wp-config.php文件
在文件末尾添加以下代码,强制WP使用新的访问路径:
define('WP_HOME', 'http://foo.example/bar'); define('WP_SITEURL', 'http://foo.example/bar');
更新固定链接规则
登录遗留WP的后台,进入「设置」→「固定链接」,随便选择一个非默认的格式(比如「文章名」),点击「保存更改」,让WP自动更新.htaccess文件中的重写规则,适配新的路径结构。批量替换数据库中的旧域名
如果遗留博客里的图片、CSS、JS等静态资源还是指向bar.foo.example,需要批量替换数据库中的旧地址。可以在PHPMyAdmin中执行以下SQL语句(注意替换wp_为你的实际数据库表前缀):
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://bar.foo.example', 'http://foo.example/bar'); UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://bar.foo.example', 'http://foo.example/bar');
三、测试验证
完成配置后,重启主站的Web服务器(Nginx或Apache),然后访问foo.example/bar:
- 检查首页是否正常加载
- 点击文章、页面链接,确认跳转路径正确
- 验证图片、样式表、JS等静态资源是否能正常显示
- 测试后台登录地址
foo.example/bar/wp-admin是否能正常访问并操作
如果遇到404错误,优先检查主站的反向代理规则是否正确,以及遗留WP的固定链接是否已完成更新。
内容的提问来源于stack exchange,提问作者Hugo Mitsumori
相关产品推荐
相关产品推荐

