Aruba托管环境下Angular生产环境路由失效,仅useHash=true配置可生效
解决方案
1. 优先排查路径劫持问题
你访问/login直接跳转到Aruba主机管理页是典型的主机商默认路径保留行为:Aruba共享主机会默认将/login、/admin这类常用路径定向到官方管理面板,优先级高于你自己站点的重写规则。
验证方法:把Angular路由里的login路径临时改为user-login,重新构建部署后访问测试,如果可以正常加载页面,就可以确认是该问题导致的。
解决方式二选一:
- 调整业务路由命名,避开
login、admin这类主机商默认保留的路径 - 联系Aruba官方技术支持,申请取消你站点的默认保留路径跳转规则
2. 修正.htaccess重写规则
你当前的.htaccess规则缺少必要的结束标记,替换为以下配置即可:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule>
修改后需要确认Aruba主机已开启mod_rewrite模块,且允许站点根目录的.htaccess覆盖全局配置,可直接联系主机商技术支持确认开启状态。
3. 校验Angular构建参数
部署生产包时,确保构建命令指定了正确的根路径:
ng build --production --base-href /
你当前的路由配置逻辑没有问题,不需要额外调整。如果上述方案都无法落地,可以继续使用{useHash: true}的哈希路由模式,该模式不需要依赖服务器端的重写规则,兼容性最好。
内容的提问来源于stack exchange,提问作者Simone Battiato
相关产品推荐
相关产品推荐

