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

通过.htaccess实现子域名映射主站目录 保持浏览器原URL不变

问题根因

你现有配置使用了R=301强制外部跳转,同时RewriteRule指向带协议的绝对URL,服务器会直接返回301响应通知浏览器跳转至新地址,这就是地址栏变更的原因。要实现地址栏保持不变,需要改用服务器内部重写,也就是服务端直接将子域名请求映射到/loja目录,不向浏览器返回跳转指令。

修正后的.htaccess配置
Options +FollowSymLinks
RewriteEngine on
Options +MultiViews

# 匹配loja子域名(含www前缀的情况)
RewriteCond %{HTTP_HOST} ^loja\.meusite\.com\.br$ [OR]
RewriteCond %{HTTP_HOST} ^www\.loja\.meusite\.com\.br$

# 内部重写到主站/loja目录,无跳转响应
RewriteRule ^(.*)$ /loja/$1 [L]
关键改动说明
  • 删除了原有REQUEST_FILENAME的两个判断条件:原条件会在请求命中主站根目录下的现有文件/目录时终止规则,导致子域名请求无法正确映射到/loja目录,移除后可保证所有loja子域名的请求都指向/loja下的对应资源
  • 去掉了R=301跳转标记:这是地址栏变更的核心触发因素,移除后不会向浏览器返回跳转指令
  • 将绝对URL目标替换为内部路径:把原来的http://www.meusite.com/loja$1改为相对服务器根目录的/loja/$1,完全在服务端完成路径映射,浏览器无感知
  • 补充了域名正则的点号转义:避免正则中的.匹配任意字符,防止非法域名被误匹配触发规则
生效前置要求
  • loja.meusite.com.br的DNS已正确解析到主站所在服务器
  • 对应Apache虚拟主机的AllowOverride配置为All,允许.htaccess规则生效

补充说明:如果映射后出现静态资源(CSS、JS、图片)加载异常,可在/loja目录下的页面头部添加<base href="/loja/">,或直接使用绝对路径引用资源,避免路径解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 12:06:05