Я развертываю веб-приложение с использованием узла js и выполняю экспресс-рассылку в свой домен общего хостинга, однако я не могу найти способ перенаправить действия моей формы и ссылки кнопок на правильный пункт назначения, поскольку они обслуживаются из подкаталога на хосте.
Я кодировал тестирование своего приложения с моего собственного компьютера, поэтому, используя localhost в качестве URL-адреса для моего сервера, затем я объявил маршруты в экспрессе как /object/add
, /object/edit/:id
, /object/list
и т. Д. ...
Кажется, что все они работают, однако я также использовал Handlebars для представлений, поэтому у меня есть такие компоненты, как
<form action="/object/edit/{{id}}" method="POST">
<div class="form-group">
<button class="btn btn-success btn-block">Save</button>
</div>
</form>
В localhost это работает, однако я пытаюсь развернуть его в домене подподкаталог mydomain.com/app/crud
, когда я делаю так, чтобы мои перенаправления указывали на mydomain.com/object/add
вместо mydomain.com/app/crud/object/add
, поэтому я получаю страницы с ошибками.
Я уже пытался настроить приложение под маршрутом, но это работает дляЭкспресс-маршрутизация не изменяет URL-адреса, исходящие от компонентов HTML.
Мои текущие объекты Express выглядят так
const app = express();
var router = express.Router();
router.use(require("./routes"));
router.use("/object", require("./routes/object"));
router.use("/personality", require("./routes/personality"));
app.use(host.baseUrl, router);
и мои маршрутизаторыкак
const express = require("express");
const router = express.Router();
const pool = require("../database");
router.get("/add", (req, res) => {
res.render("object/add");
});
router.post("/add", async (req, res) => {
const { name } = req.body;
const object= {
name
};
await pool.query("INSERT INTO objectset ?", [object]);
res.redirect("/object");
});
...
module.exports = router;
Я также пытался использовать
function handleRedirect(req, res) {
const targetUrl = targetBaseUrl + req.originalUrl;
res.redirect(targetUrl);
}
app.get('*', handleRedirect);
, но он портит все мои запросы CSS и практически все другие маршруты.
Есть ли способ, которым я могууправлять этими перенаправлениями? Может быть, вместо этого можно использовать htmlredirects?