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

如何用.htaccess将域名/子域名映射到目录/子目录且不修改浏览器URL?

.htaccess 域名/子域名目录映射配置方案

需求说明

实现域名、子域名到对应目录的内部映射,浏览器地址栏URL保持不变,具体规则如下:

  • domain1.com/* → /domain1.com/www/*
  • foo.domain1.com/* → /domain1.com/foo/*
  • bar.domain1.com/* → /domain1.com/bar/*
  • domain2.com/* → /domain2.com/www/*
  • foo.domain2.com/* → /domain2.com/foo/*
  • bar.domain2.com/* → /domain2.com/bar/*

当前配置问题

你提供的配置存在两个核心问题:

  • 包含R标记,会触发外部重定向,导致浏览器URL改变,不符合需求
  • 正则分组和条件判断逻辑有漏洞,引发目录循环追加的问题

修正后的配置

RewriteEngine On
RewriteBase /

# 处理主域名映射到www子目录
RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+)$ [NC]
RewriteCond %{REQUEST_URI} !^/%1/www/
RewriteRule ^(.*)$ /%1/www/$1 [L,NE,QSA]

# 处理子域名映射到对应子目录
RewriteCond %{HTTP_HOST} ^([^.]+)\.([^.]+\.[^.]+)$ [NC]
RewriteCond %{REQUEST_URI} !^/%2/%1/
RewriteRule ^(.*)$ /%2/%1/$1 [L,NE,QSA]

关键调整说明

  1. 移除R和P标记:仅保留内部重写规则,确保浏览器URL不发生变化
  2. 拆分规则逻辑:分别处理主域名和子域名,避免正则分组混淆,规则更易维护
  3. 防循环条件:通过REQUEST_URI判断当前请求是否已经是目标路径,避免重复追加目录
  4. 保留必要标记:NE确保特殊字符不被转义,QSA保留URL中的查询字符串,L终止后续规则执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:35:25