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

NameCheap共享主机部署Express应用出现404错误求助

解决NameCheap共享主机上Express应用的404错误

看起来你遇到的问题是Apache服务器默认优先处理PHP文件,没有把请求转发给你的Express应用——这在NameCheap共享主机的Node.js配置里是个很常见的坑,我来帮你一步步解决:

1. 修正Express的端口配置

NameCheap的Node.js环境会自动分配端口,并通过环境变量传递给你的应用,硬编码3001可能会导致端口不匹配。把你的代码改成这样:

var express = require("express");
var app = express();
// 使用环境变量端口, fallback到3001
const port = process.env.PORT || 3001;
app.set("port", port);
app.get("/hello", function(req, res) {
  res.send("hello world");
});
app.listen(app.get("port"), () => console.log("Started listening on %s", app.get("port")) );

2. 添加.htaccess重写规则

因为NameCheap共享主机默认用Apache处理请求,它会优先查找PHP/静态文件,不会自动把请求转发给你的Express服务。在应用根目录(也就是url.com对应的目录)创建或修改.htaccess文件,添加以下规则:

RewriteEngine On
# 把根路径请求转发到Node服务
RewriteRule ^$ http://127.0.0.1:%{ENV:PORT}/ [P,L]
# 把所有非静态文件/目录的请求转发到Node服务
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:%{ENV:PORT}/$1 [P,L]

这里用%{ENV:PORT}自动获取主机分配的端口,避免和硬编码端口不一致的问题。

3. 重启你的Node应用

登录NameCheap面板,找到你的Node.js应用,点击重启按钮,让新的配置生效。

完成以上步骤后,再访问http://url.com/hello,应该就能看到预期的hello world了。

内容的提问来源于stack exchange,提问作者Zack Arnett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:39:27