[英]Express root route not working in production
我創建了一個簡單的Node應用程序,該應用程序具有5條提供不同HTML文檔的路由。 在本地主機上運行時,所有路由都可以使用,但是當我在生產環境中運行應用程序時,我的根路由將提供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!"));
路線/ 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;
控制器/ 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");
};
控制器/ 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]
.htaccess
文件是問題所在,在頂部添加以下文件后,它現在可以工作:
DirectoryIndex disabled
感謝您的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.