Есть некоторый apache хост, на нем уже существует один проект с php сервером. Я пытаюсь добавить туда еще один проект, но уже базирующийся на node.js express сервере.
Вот непосредственно файл app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var http = require('http');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users.js');
var loginRouter = require('./routes/login.js');
var tasksRouter = require('./routes/tasks.js');
var groupsRouter = require('./routes/groups.js');
var bodyParser = require('body-parser');
var imageRouter = require('./routes/image.js');
var weatherRouter = require('./routes/weather.js');
var citiesRouter = require('./routes/cities.js');
var sendEmailRouter = require('./routes/email.js');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/login', loginRouter);
app.use('/tasks', tasksRouter);
app.use('/groups', groupsRouter);
app.use('/image', imageRouter);
app.use('/weather', weatherRouter);
app.use('/cities', citiesRouter);
app.use('/email', sendEmailRouter);
// 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');
});
http.createServer(app).listen(8080, function() {
console.log('Listening to port: ' + 8080);
});
module.exports = app;
И один из рутеров (indexRouter)
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', {
title: 'Ежедневник',
tasks: ["1", "2","3","4","asd",]
});
});
module.exports = router;
Если я указываю в .htaccess файле URL приложения www.example.com, то всё работает как и должно. но если я хочу обращаться к приложению не напрямую, а по адресу www.example.com/my-server, то тут возникают проблемы.
.htaccess файл:
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/hostXXXXXXX/domains/example.com/public_html/my-server"
PassengerBaseURI "/my-server"
PassengerNodejs "/home/hostXXXXXXX/nodevenv/domains/example.com/public_html/my-server/10/bin/node"
PassengerAppType node
PassengerStartupFile app.js
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
Если в
app.use('/', indexRouter);
indexRouter заменить на
function(req, res){
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
}
то приходит строка Hello World,
в противном же случае приходит строка Cannot GET /my-server/ , а сам статус ответа становится 404