最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Apache 中静态网站部署如何配置 DocumentRoot 加载前端源码
时间:2026-08-30 20:07:49 编辑:袖梨 来源:一聚教程网
DocumentRoot 指向 dist 绝对路径以提供静态文件,但必须配合 mod_rewrite 重写规则——当请求非真实文件或目录时 fallback 至 /index.html,由前端路由接管,否则刷新页面返回 404。
Apache 部署静态 (比如 Vue、React 打包后的前端项目)时,DocumentRoot 的作用是告诉 Apache:用户访问这个站点时,该从哪个目录里找 HTML、JS、CSS 等文件。但只设好 DocumentRoot 不够——前端路由(如 /user/settings)没有真实对应文件,必须配合重写规则,否则刷新页面就 404。
DocumentRoot 必须指向 dist 目录的绝对路径
打包工具(如 npm run build)生成的静态资源默认在 dist/ 目录下。Apache 不接受相对路径,所以配置中要写完整路径:
-
DocumentRoot /var/www/my-app/dist(Ubuntu/Debian) -
DocumentRoot /srv/www/my-app/dist(RHEL/CentOS) - 确保该目录存在,且 Apache 进程(如 www-data 或 apache)有读取权限
紧跟着配好同路径的 <Directory> 块
仅声明 DocumentRoot 不会自动赋予访问权限。必须用 <Directory> 明确允许访问,并启用重写支持:
- 路径需与
DocumentRoot完全一致:<Directory "/var/www/my-app/dist"> - 关键指令至少包含:
Require all granted(放开访问)、AllowOverride All(允许 .htaccess 生效) - 如果不想依赖 .htaccess,可直接把重写规则写进
<Directory>块内
必须启用 mod_rewrite 并配置 fallback 规则
单页应用所有非资源请求(如 /about、/admin)都应返回 index.html,由前端 JS 路由接管。这靠重写实现:
- 先启用模块:
sudo a2enmod rewrite(Debian系)或确认LoadModule rewrite_module modules/mod_rewrite.so已加载(RHEL系) - 在
<Directory>内添加标准 fallback 规则:
RewriteEngine OnRewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
含义是:只要请求的不是真实文件(!-f)也不是真实目录(!-d),就统一重写到 /index.html。
验证和重启不能跳过
改完配置后必须检查语法并重载服务,否则修改不生效:
- 检查语法:
sudo apachectl configtest或sudo httpd -t - 无报错后重载:
sudo systemctl reload apache2(Debian)或sudo systemctl reload httpd(RHEL) - 浏览器访问根路径,再手动输入一个前端路由地址(如
/dashboard)并刷新,确认不报 404
相关文章
- TPLink TLWDR7400 无线路由器网速限制方法 08-30
- web高危漏洞有哪些-权限检查和参数设置 08-30
- 浅草雷门和纸明信片提示词怎么写-画面元素和风格参数 08-30
- xxe 漏洞是的怎么解决-原因和修复方法 08-30
- win7如何安装net4.0 官方下载验证与故障处理 08-30
- 赛博朋克悬崖巨型城市壁纸提示词怎么写-画面元素和风格参数 08-30