Javascript NodeJS Express共享主机获取index.php请求

Javascript NodeJS Express共享主机获取index.php请求,javascript,php,node.js,.htaccess,express,Javascript,Php,Node.js,.htaccess,Express,我有一个共享的主机包。我已经创建了一个可以在本地运行的NodeJS应用程序,我正在尝试让它在托管的网站上运行。但是,该网站返回404错误,因为它对index.php执行GET请求,但显然不存在该请求。实际的错误文本是:“Cannot GET/index.php”,下面是用于启动节点应用程序的app.js的代码 var createError = require('http-errors'); var express = require('express'); var path = require

我有一个共享的主机包。我已经创建了一个可以在本地运行的NodeJS应用程序,我正在尝试让它在托管的网站上运行。但是,该网站返回404错误,因为它对index.php执行GET请求,但显然不存在该请求。实际的错误文本是:“Cannot GET/index.php”,下面是用于启动节点应用程序的app.js的代码

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var logger = require('morgan');
var mysql = require('mysql');
var session = require('express-session');

var indexRouter = require('./routes/index');
var dashboardRouter = require('./routes/dashboard');

var app = express();

global.connection = mysql.createConnection({
//deleted for security
});

connection.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
});


// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(session({resave: false, secret: 'this-is-a-secret-token', cookie: { maxAge: 600000 }}));
app.use(express.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/dash', dashboardRouter);

// catch 404 and forward to error handler
//app.use(function(req, res, next) {
//  next(createError(404));
//});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;
然后,我发现的唯一建议的解决方案都涉及修改.htaccess文件。下面是my.htaccess的atm外观:

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
        # Removes index.php from ExpressionEngine URLs
        RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
        RewriteCond %{REQUEST_URI} !/system/.* [NC]
        RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

        # Directs all EE web requests through the site index file
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L]
        RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

重新启动发动机
重写基/
重写规则^$http://127.0.0.1:3000/ [P,L]
#从ExpressionEngine URL中删除index.php
RewriteCond%{THE_REQUEST}^GET.*index\.php[NC]
重写cond%{REQUEST_URI}/系统/*[NC]
重写规则(.*)索引\.php/*(.*)/$1$2[R=301,NE,L]
#通过站点索引文件指示所有EE web请求
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$http://127.0.0.1:3000/$1[P,L]
重写规则^(.*)$/index.php/$1[L]

这包括我尝试集成解决方案,但迄今为止没有成功。我做错了什么?

一个可能会让你思考的小技巧:

app.get('/index.php',()=>{res.send("virtual index.php")})
或者


你确定你的共享主机允许node.js服务器吗?还有,为什么你要在node.js应用程序中加载index.php?您正在尝试运行PHP代码吗?
app.get('/index.php',()=>{res.sendFile("/path/to/index.php")})