如何让同public_html下的子域名访问主域名目录内的文件
方案1:使用.htaccess内部重写(无需服务器权限,兼容性最好)
你之前用../../的方式无法生效是Web服务器的安全限制:每个域名的DocumentRoot(根目录)是固定锁定的,客户端请求的相对路径无法跳出这个目录范围,只能通过服务器端规则处理。
假设你的目录结构如下:
public_html/ ├── images/ # 主域名图片目录,对应 example.com/images/ └── subdomain/ # 子域名 subdomain.example.com 的根目录
你只需要在子域名的根目录(即public_html/subdomain/)下新建/编辑.htaccess文件,添加以下规则:
RewriteEngine On # 匹配所有指向images目录的请求,内部重写到上级目录的对应图片文件 RewriteRule ^images/(.*)$ /../images/$1 [L]
配置完成后,你在子域名的页面里直接用/images/one.jpg的相对路径就能访问到主域名下的对应图片,整个过程是服务器内部处理,不会发生跳转,也不需要填写完整的主域名路径。
注意:如果之前已经存在.htaccess文件,把上述规则加在已有规则的最前面即可,避免被其他规则优先拦截,绝大多数虚拟主机默认已开启mod_rewrite模块,无需额外配置。
方案2:创建符号链接(有Shell权限时优先选择,性能更高)
如果你有服务器的SSH登录权限,可以直接在子域名根目录下创建指向主域名图片目录的软链接,执行以下命令即可:
# 进入子域名根目录 cd public_html/subdomain # 创建指向主域名images目录的软链接 ln -s ../images images
如果访问时出现权限报错,在子域名的.htaccess里添加一行配置开启软链接支持即可:
Options +FollowSymLinks
这种方案不需要重写规则,所有对subdomain.example.com/images/的请求会直接映射到主域名的图片目录,响应性能比htaccess重写更好。
内容的提问来源于stack exchange,提问作者Zeeshan Ali
相关产品推荐
相关产品推荐

