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

htaccess配置:多域名同主机下重定向请求到对应子文件夹

.htaccess多域名路由规则修正方案

核心问题是原有规则未对请求目标做真实资源校验,导致所有请求无论是否对应静态文件,都被强制转发到入口文件。以下是可直接使用的修正后配置:

RewriteEngine on
RewriteBase /

# domain1.com 路由规则:指向www目录入口页
RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC]
RewriteRule ^(.*)$ www/index.html [L,QSA]

# domain2.com 静态资源放行规则
RewriteCond %{HTTP_HOST} ^domain2\.com$ [NC]
# 校验请求路径是否对应app目录下真实存在的文件、目录或软链接
RewriteCond %{DOCUMENT_ROOT}/app/%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/app/%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/app/%{REQUEST_URI} -l
RewriteRule ^(.*)$ app/$1 [L,QSA]

# domain2.com 动态请求转发规则
RewriteCond %{HTTP_HOST} ^domain2\.com$ [NC]
RewriteRule ^(.*)$ app/index.php?/$1 [L]

规则说明

  • 修正了原有HTTP_HOST匹配的正则漏洞:将未转义的.替换为\.,避免.作为正则通配符误匹配domain2acom、domain2xcom这类非目标域名。
  • 静态资源优先匹配:对domain2的请求优先校验app目录下是否存在对应物理资源,存在则直接返回资源,不触发PHP解析,覆盖图片、样式表、JS脚本、静态页面等所有真实存在的文件访问需求。
  • 动态请求兜底转发:不存在对应物理资源的请求,统一转发到app目录下的index.php单入口处理,路径参数会按原有规则正常传递。

注意事项

该配置需放置在站点根目录(与www、app文件夹同级)下生效,请提前确认Apache站点配置中已设置AllowOverride All,否则.htaccess规则不会被加载解析。

效果验证

  • 访问domain2.com/some/request/1/2:app目录下无对应物理路径,自动转发到app/index.php处理
  • 访问domain2.com/test.png:检测到app/test.png真实存在,直接返回图片资源
  • 访问domain2.com/static/css/main.css:检测到对应静态文件真实存在,直接返回样式表资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:09:21