Apache DocumentRoot 支持软链接但默认不跟随,必须在对应<Directory>块中显式配置Options +FollowSymLinks,且路径需与DocumentRoot完全一致;同时应限制启用范围、配合属主校验(如SymLinksIfOwnerMatch)并确保进程有目标路径读取权限。

Apache 的 DocumentRoot 本身支持软链接(符号连接),但默认不跟随,必须显式启用 FollowSymLinks 选项,否则会返回 403 Forbidden 错误。关键不是“能不能用”,而是“怎么安全地用”。
DocumentRoot 指向软链接的配置要点
当 DocumentRoot 设置为一个软链接(例如 /var/www/current → /var/www/releases/v2.3)时,Apache 不会自动解析目标路径,需在对应 <Directory> 块中明确允许符号链接跟随:
- 使用绝对路径定义 DocumentRoot,如:
DocumentRoot "/var/www/current" - 配套的
<Directory>路径必须与 DocumentRoot 完全一致(即也写"/var/www/current",不能写实际目标路径) - 在该
<Directory>块中添加:Options +FollowSymLinks - 仍需保留
Require all granted和基础权限(目录 755、文件 644,属主为 www-data 或 apache)
Alias 中使用软链接的注意事项
Alias 映射的物理路径若含软链接(比如 Alias /static /srv/cache/static,而 /srv/cache 是软链接),同样需要开启 FollowSymLinks,但注意作用位置:
通过PDFAPIHub云API将office文档(DOCX、DOC、PPT、PPTX、XLS、XLSX、CSV、TXT、ODT、RTF)转换为PDF,文档上传至pdfapihub.com完成转换。
- 必须在
<Directory "/srv/cache/static">块中设置Options +FollowSymLinks - 仅在 DocumentRoot 对应的 Directory 块里开无效,每个 Directory 块只管自己路径
- 如果软链接跨文件系统或指向非标准位置,还需确认 Apache 进程有读取源路径的权限(不只是链接本身)
安全提醒:别忽略 FollowSymLinks 的风险
FollowSymLinks 允许 Apache 穿过软链接访问任意路径,若配置不当可能暴露敏感目录:
- 避免在宽泛路径上启用,例如
<Directory "/">或<Directory "/var/www"> - 只在明确需要软链接的最小粒度目录下开启(如
/var/www/current或/srv/uploads) - 生产环境建议配合
SymLinksIfOwnerMatch替代(更严格:仅当链接与目标同属主时才跟随) - 重启 Apache 生效:
sudo systemctl restart apache2(Debian/Ubuntu)或sudo systemctl restart httpd(RHEL/CentOS)
软链接不是黑魔法,它只是让部署和切换更灵活;真正起作用的是 Options 控制和权限收敛。

















