如何在WordPress中实现URL掩码 将指定页面内容映射到新域名显示
WordPress实现URL掩码(反向代理映射)的解决方案
你需要的是反向代理掩码功能,区别于301/302跳转,可实现地址栏始终显示新域名、内容拉取原域名指定路径的效果,以下是可落地的实现方案:
之前.htaccess规则不生效的常见原因
- Apache未开启必要模块:需要先启用
mod_proxy、mod_proxy_http、mod_rewrite三个核心模块 - 虚拟主机配置中
AllowOverride参数设置为None,导致.htaccess规则不被加载 - 规则书写错误,未启用代理标记
[P],仅写普通重写规则会变成跳转而非掩码
方案1:服务器层面配置(最稳定,优先推荐)
如果你用的是Apache服务器
如果有权限修改虚拟主机配置,优先写在httpd.conf或者站点配置文件里,比.htaccess性能更高:
<VirtualHost *:80> ServerName xyz.com # 若使用HTTPS则改成监听*:443,补充SSL证书相关配置 ProxyRequests Off ProxyPass / http://abc.com/test/ ProxyPassReverse / http://abc.com/test/ # 替换页面内的原域名链接,避免资源加载异常 AddOutputFilterByType SUBSTITUTE text/html Substitute "s|abc.com/test|xyz.com|i" </VirtualHost>
如果只能用.htaccess,把以下代码放在xyz.com站点根目录的.htaccess文件最顶部:
RewriteEngine On RewriteCond %{HTTP_HOST} ^xyz\.com$ [NC] RewriteRule ^(.*)$ http://abc.com/test/$1 [P,L]
如果你用的是Nginx服务器
在xyz.com的server配置块中添加以下规则:
server { listen 80; server_name xyz.com; # HTTPS配置自行补充证书、监听443端口逻辑 location / { proxy_pass http://abc.com/test/; proxy_set_header Host abc.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 替换页面内原域名避免资源跳转 sub_filter "abc.com/test" "xyz.com"; sub_filter_once off; } }
方案2:WordPress插件实现(无服务器配置权限时用)
如果没有权限修改服务器配置,可以安装WordPress反向代理类插件完成配置:
- 安装并启用
WP Reverse Proxy插件 - 在插件设置中添加映射规则:源域名填写
xyz.com,目标地址填写http://abc.com/test - 开启URL替换功能,将页面中所有
abc.com/test的链接替换为xyz.com - 保存设置后刷新站点缓存即可生效
注意事项
- 两个域名都需要配置有效的SSL证书,否则HTTPS访问时会报错
- 如果原站点开启了防盗链,需要将xyz.com加入白名单,避免图片、样式等资源加载失败
- 配置完成后需要清除浏览器缓存、站点缓存后再测试效果
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

