Экспресс корневой маршрут не работает в производстве - PullRequest
0 голосов
/ 26 февраля 2019

Я создал простое приложение Node с 5 маршрутами, которые обслуживают различные документы HTML.При работе на localhost все маршруты работают, но когда я запускаю приложение в рабочей среде, мой корневой маршрут обслуживает страницу 404, что означает, что маршрут не существует.

Я настроил хостинг A2, как указано в их гид .Вы можете протестировать приложение здесь .

Я предполагаю, что проблема в файле .htaccess, который я скопировал из руководства, но я не понимаю ни одной строки там.Вот код, расположенный в папке public_html:

app.js

const path = require("path");

const express = require("express");
const bodyParser = require("body-parser");

const appRoutes = require("./routes/app");
const errorController = require("./controllers/error");

const app = express();
app.set("view engine", "ejs");

app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, "public")));

app.use(appRoutes);
app.use(errorController.get404);

app.listen(40000, () => console.log("Server is up on port 40000!"));

routs / app.js

const express = require("express");

const appController = require("../controllers/app");

const router = express.Router();

router.get("/", appController.getIndex);
router.get("/work", appController.getWork);
router.get("/services", appController.getServices);
router.get("/blog", appController.getBlog);
router.get("/contact", appController.getContact);

module.exports = router;

controllers / app.js

exports.getIndex = (req, res, next) => {
  res.render("index");
};

exports.getWork = (req, res, next) => {
  res.render("work");
};

exports.getServices = (req, res, next) => {
  res.render("services");
};

exports.getBlog = (req, res, next) => {
  res.render("blog");
};

exports.getContact = (req, res, next) => {
  res.render("contact");
};

controllers / error.js

exports.get404 = (req, res, next) => {
  res.status(404).render("404");
};

.htaccess

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:40000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:40000/$1 [P,L]

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Файл .htaccess был проблемой, теперь он работает после добавления этого вверху:

DirectoryIndex disabled

Спасибо за помощь!

0 голосов
/ 26 февраля 2019

Поскольку вы можете достичь своей домашней страницы по порту 40000 , проблема определенно связана с файлом .htaccess.

Можно ли добавить косую черту в последнее правило?

RewriteRule ^/(.*)$ http://127.0.0.1:40000/$1 [P,L]

или добавьте это раньше

RewriteBase /
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...