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

子域图片重写至根域:.htaccess规则失效问题求助

解决子域访问主域/assets目录资源的问题

你的现有规则逻辑完全搞反了——它们是把非www域名下的/assets请求重定向回主域,但你要的是让子域能访问主域的/assets资源。

前提确认

  • 子域subdomain.example.com必须已正确解析到服务器,且Apache已配置该子域的虚拟主机(若子域有独立文档根,需确保服务器进程有权限访问主域的/assets目录)。

正确的.htaccess规则

情况1:子域与主域共享同一文档根

这种情况无需额外重写,直接访问https://subdomain.example.com/assets/picture.jpg即可读取对应文件。若访问异常,可添加以下规则确保请求被正确处理:

# 允许子域访问/assets目录
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule ^assets/(.*)$ /assets/$1 [L]

情况2:子域有独立文档根

假设主域文档根为/var/www/www,子域文档根为/var/www/subdomain,需将子域下的/assets请求内部映射到主域的/assets目录:

RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule ^assets/(.*)$ /var/www/www/assets/$1 [L]

若需重定向(子域请求跳转到主域URL)

如果实际需求是让子域的/assets请求跳转到主域地址(而非直接访问),可使用:

RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule ^assets/(.*)$ https://www.example.com/assets/$1 [R=301,L]

原有规则的错误点

  • 正则写法错误:否定匹配应写为!^www\.example\.com$,而非^!www.example.com$;域名中的.必须转义为\.,否则会匹配任意字符。
  • 逻辑反向:原有规则是将非www的请求转去主域,与你需要的子域访问需求完全相悖。
  • 路径匹配错误:规则二中的^/assets/(.*)$在.htaccess中无需开头的/,因为.htaccess基于当前目录解析,开头的/会导致匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:20:34