You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用mod rewrite实现子域名到主域名/blog路径的URL映射且保持URL不变

解决WordPress多站点URL迁移(blog.mydomain.com → mydomain.com/blog)且保持URL不变的问题

首先得指出你当前.htaccess规则里的一个关键错误:%{HTTP_HOST}变量只匹配请求的域名部分(比如mydomain.com),不会包含路径(/blog),所以你的RewriteCond %{HTTP_HOST} ^mydomain.com/blog条件永远不会触发,你看到的URL变化大概率是WordPress站点本身的跳转逻辑导致的,而非这个规则在起作用。

下面是针对你的场景的正确配置方案,核心是通过反向代理让mydomain.com/blog/*的请求内部转发到blog.mydomain.com/*,同时地址栏保持mydomain.com/blog不变:

步骤1:修正.htaccess规则(放在\.\mysite\目录下)

替换你现有的规则为以下代码:

RewriteEngine On

# 处理mydomain.com/blog开头的请求,代理到blog.mydomain.com
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
RewriteRule ^blog/(.*)$ http://blog.mydomain.com/$1 [P,L]

# 如果需要后续支持HTTPS,把上面的目标URL改成https://blog.mydomain.com/$1
# 或者用相对协议://blog.mydomain.com/$1,自动适配HTTP/HTTPS
  • [P]:启用反向代理(需要确保你的服务器已经开启了mod_proxy和mod_proxy_http模块,如果是Apache的话)
  • [L]:停止处理后续规则,避免冲突
  • [NC]:不区分大小写匹配域名

步骤2:调整WordPress站点的URL设置

因为你用了Domain Mapping插件,需要确保:

  • 新创建的mydomain.com/blog站点,在WordPress后台的站点设置里,把「站点地址(URL)」和「WordPress地址(URL)」都设置为http://mydomain.com/blog(后续启用HTTPS后改成https://)
  • 原blog.mydomain.com站点的设置可以暂时保留,但建议后续迁移完成后,在WordPress多站点网络管理里把它的状态改成「存档」,避免重复内容

步骤3:测试与注意事项

  • 测试访问mydomain.com/blog/wordpress_urls,确认地址栏URL保持不变,内容正常加载
  • 如果启用HTTPS后,需要确保:
    1. 服务器配置了有效的SSL证书(覆盖mydomain.com和blog.mydomain.com)
    2. 把.htaccess里的代理目标URL改成https://blog.mydomain.com/$1,或者用//blog.mydomain.com/$1自动适配
    3. 更新WordPress站点的URL为HTTPS版本
  • 确保服务器的mod_proxy相关模块已启用:如果是Apache,可以通过a2enmod proxy proxy_http命令开启(Linux环境),Windows环境则在httpd.conf里取消对应模块的注释

这样配置后,用户访问mydomain.com/blog路径时,服务器会内部代理到原博客站点,地址栏不会跳转到blog.mydomain.com,完美实现你要的URL迁移效果。

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:18:21