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

如何在同一域名下同时运行Node.js应用与WordPress并确保后台可访问

解决Node.js应用与WordPress在cPanel中共存的问题

没问题,这个场景很常见——当Node.js应用接管了域名根路径后,Apache会把所有请求都交给Passenger(cPanel运行Node应用的默认工具)处理,导致WordPress的子目录请求被Node应用拦截返回404。下面是两种可靠的解决方法:

方法一:修改.htaccess规则(推荐)

这是最直接的方式,通过Apache的重写规则让/wp-installation开头的请求跳过Node.js应用,直接由Apache处理WordPress目录。

  • 登录cPanel,打开文件管理器,找到网站根目录(通常是public_html),编辑里面的.htaccess文件。
  • 在现有的Passenger配置(Node.js应用的启动规则)之前添加以下规则:
    RewriteEngine On
    
    # 让/wp-installation路径的请求跳过Node.js处理
    RewriteRule ^wp-installation/ - [L]
    
  • 保存文件后,重启你的Node.js应用(在cPanel的Node.js应用管理界面操作)。

原理:[L]标志告诉Apache,匹配到/wp-installation/开头的请求后就停止执行后续规则,不会把这些请求交给Passenger,而是直接去public_html/wp-installation目录找对应的WordPress文件。

方法二:调整Node.js应用的路由配置

如果不想修改.htaccess,也可以在你的Node.js应用中添加一个路由,把/wp-installation开头的请求反向代理到WordPress的目录。不过这种方法需要你的Node应用支持反向代理(比如用Express的http-proxy-middleware):

  • 安装代理中间件(如果用Express):
    npm install http-proxy-middleware --save
    
  • 在你的Node应用入口文件(比如app.js或server.js)中添加代理配置:
    const { createProxyMiddleware } = require('http-proxy-middleware');
    const express = require('express');
    const app = express();
    
    // 代理/wp-installation的请求到本地WordPress目录
    app.use('/wp-installation', createProxyMiddleware({
      target: 'http://localhost/public_html/wp-installation',
      changeOrigin: true,
      pathRewrite: {
        '^/wp-installation': ''
      }
    }));
    
    // 你的其他Node应用路由
    app.get('/', (req, res) => {
      res.send('Node.js App');
    });
    
    app.listen(3000);
    
  • 重启Node应用生效。

不过这种方法需要你对Node代码有一定了解,而且可能会遇到权限或端口的问题,所以更推荐第一种.htaccess的方式。

最后提醒一下:确保WordPress后台的站点URL和首页URL设置正确(在WP后台的「设置-常规」里,应该是https://yourdomain.com/wp-installation),之前你能正常访问,这个应该已经配置好了。

内容的提问来源于stack exchange,提问作者C Clarke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:07:48