You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除Angular v15 URL的#后,Apache环境下API请求失效如何解决?

解决Angular v15部署Apache时无#URL刷新404及/api请求被拦截问题

部署Angular v15应用到Apache主机后,移除URL中的#会出现页面刷新404错误。按照官方文档配置.htaccess重写规则后,又出现新问题:所有以/api/开头的请求(例如mywebsite.com/api/login)会被转发到index.html,导致API无法正常响应。需要调整重写规则,让其跳过/api路由。

原网站根目录的.htaccess文件内容如下:

# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/vitalyto/ptintec-api"
PassengerBaseURI "/"
PassengerNodejs "/home/vitalyto/nodevenv/ptintec-api/16/bin/node"
PassengerAppType node
PassengerStartupFile src/index.js
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
<IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteBase /
     RewriteRule ^index\.html$ - [L]
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule . index.html [L]
</IfModule>

解决方案

在重写模块中添加RewriteCond %{REQUEST_URI} !^/api/规则,让重写引擎跳过所有以/api/开头的请求。修改后的.htaccess文件内容如下:

<IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteBase /
     RewriteRule ^index\.html$ - [L]
     RewriteCond %{REQUEST_URI} !^/api/
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule . index.html [L]
</IfModule>

修改完成后,Angular v15+应用可正常使用无#的URL,同时/api开头的请求也能正常被后端处理。

更新:后续发现有对应的生成器项目可用于该配置。

内容的提问来源于stack exchange,提问作者vitaly-t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:30:27