CentOS下Apache部署Angular4项目路由404问题求助
解决CentOS Apache部署Angular4路由刷新404问题
我之前在CentOS上部署Angular路由应用时也碰到过完全一样的问题,给你几个实用的排查和修复步骤,应该能解决:
1. 确认Apache Rewrite模块已启用
CentOS默认的Apache可能没开启rewrite模块,这是路由重写的核心,先检查:
httpd -M | grep rewrite
如果输出里没有rewrite_module (shared),就需要启用它:
- 编辑
/etc/httpd/conf.modules.d/00-base.conf,找到#LoadModule rewrite_module modules/mod_rewrite.so这一行,去掉前面的#注释 - 重启Apache服务:
sudo systemctl restart httpd
再次执行检查命令,确认模块已加载。
2. 修正.htaccess规则和权限
你的.htaccess规则可能在CentOS的Apache环境下路径解析有问题,建议替换成更可靠的版本,放在/var/www/html目录下:
RewriteEngine On # 仅当请求的文件或目录不存在时,重定向到index.html RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.html [L]
同时确保文件权限正确,让Apache能读取:
sudo chmod 644 /var/www/html/.htaccess sudo chown apache:apache /var/www/html/.htaccess
3. 验证httpd.conf配置是否生效
你的/etc/httpd/conf/httpd.conf里的
- 执行配置检查,确保没有语法错误:
sudo apachectl configtest
如果输出Syntax OK,就重启Apache让配置生效:
sudo systemctl restart httpd
如果有错误,根据提示修复对应配置项。
4. 排查日志找具体原因
如果以上步骤都做完还是404,查看Apache的错误日志,里面会有明确的问题提示:
sudo tail -f /var/log/httpd/error_log
比如会显示rewrite模块未加载、.htaccess被忽略(比如AllowOverride没开)等具体信息,根据日志再针对性修复。
最后:清除浏览器缓存
有时候浏览器的旧缓存会导致路由异常,建议打开隐私模式或者清除缓存后再测试路由访问。
内容的提问来源于stack exchange,提问作者edit2112
相关产品推荐
相关产品推荐

