У меня есть приложение Nodejs , размещенное в службе общего хостинга.Приложение обслуживает приложение Angular в папке public_html .Мое приложение работает правильно, но при перезагрузке под-маршрутов я получаю сообщение об ошибке ниже.
Невозможно получить / суб-маршрут
, но это происходит только с под-маршрутами .
У меня установлено серверное приложение узла:
//import modules
var express = require('express'),
bodyParser = require('body-parser'),
morgan = require('morgan'),
cors = require('cors');
path = require('path');
var app = express();
var port = process.env.PORT || 3000;
//import database connection from dbconnect.js file
var mysql = require('./dbconnect/dbconnect');
//Parse as urlencoded and json.
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
//adding middleware - cors
app.use(cors());
//Http logger
app.use(morgan('dev'));
//Uncomment for production
app.use(express.static(__dirname + '/public'));
app.get('/*', (req,res) => res.sendFile(path.join(__dirname+'/public')));
app.use(function (req,res,next){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "x-access-token, Origin, Content-Type, Accept");
next();
});
//import routes
var user = require('./routes/Users');
route = require('./routes/route');
router = require('./router/router');
//adding routes
app.use('/api', user, route, router);
app.listen(port, function() {console.log('Server started at http://localhost:'+port+'/');});
Мой файл .htaccess настроен как
DirectoryIndex disabled
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L]
Я попытался изменить эту строку
app.get('/*', (req,res) => res.sendFile(path.join(__dirname+'/public')));
до
app.get('/*', (req,res) => res.sendFile(path.join(__dirname+'/public/index.html')));
Устраняет ошибку, но тогда мои маршруты API не работают, когда я делаю это.