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

IONOS Linux VPS切换HTTPS后React静态文件返回404如何解决?

问题根因定位

你当前的HTTPS虚拟主机配置中,ProxyPass / https://127.0.0.1:5001/ 规则会将根路径下的所有请求全部转发给.NET Core后端服务,静态文件请求不会被Apache分发到指定的静态资源目录,全部交给没有对应静态路由的后端处理,自然返回404。


排查步骤

  • 执行apache2ctl -S查看所有加载的虚拟主机配置,确认当前生效的443端口主机规则是否为带ProxyPass的转发规则,验证你手动添加的静态目录配置是否被Plesk自动生成的配置覆盖(Plesk生成的配置优先级默认高于手动修改的apache2.conf、sites-enabled下的文件)。
  • 查看.NET Core服务的运行日志,确认访问静态文件时请求是否确实被转发到了后端服务,排除目录权限问题导致的404。
  • 检查静态文件目录权限,确认运行Apache的默认用户www-data有对应目录的读取权限。

修复方案

方案1:调整Apache代理规则(推荐,改动最小)

在Plesk面板对应站点的「Apache & nginx 设置」-「附加指令」中修改HTTPS配置,仅转发API前缀的请求到后端,其余请求走静态文件目录,配置示例如下:

SSLProxyEngine on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPreserveHost On
# 仅转发/api开头的接口请求到.NET Core
ProxyPass /api https://127.0.0.1:5001/api
ProxyPassReverse /api https://127.0.0.1:5001/api
# 其余请求走静态文件目录
DocumentRoot /var/www/vhosts/default/htdocs/
<Directory /var/www/vhosts/default/htdocs>
  Allow from all
  Options -MultiViews
  Require all granted
  # 新增React路由重写规则,解决前端路由刷新404问题
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</Directory>
ServerName mywebsite.com
ServerAlias *.mywebsite.com
ErrorLog ${APACHE_LOG_DIR}error.log
CustomLog ${APACHE_LOG_DIR}access.log common

修改完成后执行systemctl reload apache2重载配置即可生效。

方案2:用.NET Core托管静态文件(适合前后端同端口部署)

将React build目录下的所有文件放到.NET Core项目的wwwroot目录中,然后在.NET Core项目的Program.cs(或Startup.cs)中添加静态文件托管中间件:

// 注意放在路由中间件、控制器映射逻辑之前
app.UseDefaultFiles(); // 自动识别index.html为默认首页
app.UseStaticFiles(); // 托管wwwroot目录下的所有静态资源

重新编译发布.NET Core项目即可,不需要修改Apache原有配置,所有请求统一走后端,由后端自动区分处理静态文件和API请求。


内容的提问来源于stack exchange,提问作者Ataa Aub

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 01:24:03