Angular14部署Apache后路由报File Not Found问题排查
问题排查与修复方案
1. Base href 拼写错误
你的应用部署在/var/www/game_sites/public_html/test目录,但base href设置为<base href="/teste/">,多了一个字母e,这会导致Angular加载资源时路径错误,直接修正为:
<base href="/test/">
2. .htaccess 文件位置错误
你把.htaccess放在了public_html根目录,但你的Angular应用在test子目录下,应该将.htaccess移动到/var/www/game_sites/public_html/test目录中,这样规则才会作用于你的应用路径。
3. Rewrite 规则语法错误
原规则最后一行RewriteRule ^/index.html语法不完整,正确的规则应该匹配所有不存在的资源,重写到当前目录下的index.html。修正后的.htaccess内容如下:
RewriteEngine On # 如果请求的是存在的文件或目录,直接访问 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # 如果资源不存在,重写到index.html RewriteRule ^ index.html [L]
说明:
%{REQUEST_FILENAME}会自动结合当前目录路径,不需要手动拼接%{DOCUMENT_ROOT},更适合子目录部署场景。
4. 额外检查项
- 确保Apache开启了
mod_rewrite模块,可通过sudo a2enmod rewrite启用,然后重启Apache服务。 - 检查Apache的站点配置文件(比如
000-default.conf),确保AllowOverride All设置在/var/www/game_sites/public_html/test对应的<Directory>块中,否则.htaccess规则不会生效。
内容的提问来源于stack exchange,提问作者CodeTzu
相关产品推荐
相关产品推荐

