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

如何通过.htaccess动态重写src标签以适配多子项目目录的资源路径

动态适配所有子项目的Apache重写规则解决方案

没问题,我帮你把这个重写规则改成动态适配所有project*子项目的版本,完全符合你先检查根目录资源、再匹配对应项目目录的逻辑!

核心思路

我们需要实现两个关键逻辑:

  1. 当用户访问某个project*子项目的页面时,记录当前访问的项目(用Cookie实现,可靠且无侵入)
  2. 处理资源请求时,优先检查根目录是否存在该资源;如果不存在,再根据记录的项目重写到对应子项目目录

修改后的完整.htaccess规则

# --------------------------
# 第一步:记录当前访问的子项目(设置Cookie)
# --------------------------
# 当访问subfolder下的任意project*目录时,设置Cookie保存项目名称
RewriteCond %{REQUEST_URI} ^/root/subfolder/(project\d+)/ [NC]
# 格式说明:CO=Cookie名称:值:域名:有效期(天):路径:是否仅HTTPS:是否HttpOnly
# 本地测试用localhost,正式环境替换成你的域名(比如example.com)
RewriteRule ^ - [CO=current_project:%1:localhost:1:/:false:true]

# --------------------------
# 第二步:处理资源请求的重写逻辑
# --------------------------
# 1. 优先检查根目录是否存在该资源,如果存在,直接返回(不重写)
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -f
RewriteRule ^(.*\.(gif|jpg|png|svg|js|css))$ - [L]

# 2. 如果根目录不存在,检查Cookie中记录的项目目录是否存在该资源
RewriteCond %{HTTP_COOKIE} current_project=([^;]+) [NC]
RewriteCond %{DOCUMENT_ROOT}/root/subfolder/%1/%{REQUEST_URI} -f
# 重写到对应项目的目录下
RewriteRule ^(.*\.(gif|jpg|png|svg|js|css))$ root/subfolder/%1/$1 [L]

# 3. 可选:如果根目录和对应项目目录都不存在资源,返回404
RewriteRule ^(.*\.(gif|jpg|png|svg|js|css))$ - [R=404,L]

规则说明

  • Cookie记录部分:当用户访问/root/subfolder/project1/或/root/subfolder/project2/这类路径时,会自动设置一个名为current_project的Cookie,值为对应的项目名称(比如project1),有效期1天,确保后续资源请求能匹配到正确的项目。
  • 资源检查逻辑:
    • 首先判断请求的资源是否在根目录存在(比如请求/script.js,会检查root/script.js),存在就直接返回,满足你的例外需求。
    • 如果根目录没有该资源,就读取Cookie中的项目名称,检查对应项目目录下是否存在(比如root/subfolder/project1/script.js),存在则重写请求到该路径。
  • 兼容原有逻辑:如果请求本身就是某个项目目录下的资源(比如/root/subfolder/project1/script.js),第一步的根目录检查会发现该路径存在,直接返回,和你原来的!project1/.*条件效果一致。

适配你的文件夹结构

以project1为例:

  • 当用户访问root/subfolder/project1/index时,Cookie会被设置为current_project=project1
  • 如果页面中请求/script.js,先检查root/script.js是否存在:
    • 存在:直接返回根目录的script.js
    • 不存在:重写到root/subfolder/project1/script.js返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:22:37