Я разрабатываю сервер в NodeJS с Express, но веб-структура немного усложняется (я этого не делал и не могу изменить).
Потокчто-то вроде этого:
- Узловый сервер получает вызов типа
https://localhost/**{id}**
. - Полученный идентификатор - это имя папки, в которой хранятся все файлы (html, js, css и т. д.),По умолчанию он возвращает
index.html
. - Файловая структура любого веба не имеет строгой логики, это означает, что может быть больше представлений на том же уровне, что и у
index.html
или в папках, где бы ни находились клиентыхотел разработать их.
У меня проблема в том, как правильно направить файлы.Поскольку я получаю идентификатор только тогда, когда индекс вызывается, я не могу понять, как маршрутизировать ссылки, такие как <a href="view1.html">View 1</a>
или даже вызовы файлов javascript <script src='scripts/someGreatFunctions.js'></script>
, поскольку они также могут находиться в корне или в папке (даже две вещи одновременно).
Мой server.js
файл:
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
const config = require('./config');
var webId;
var options = {
key: fs.readFileSync(config.paths.certificate.key),
cert: fs.readFileSync(config.paths.certificate.crt),
requestCert: false,
rejectUnauthorized: false
};
app.use(function (req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Credentials", "true");
res.setHeader("Access-Control-Allow-Methods", "GET, HEAD, OPTIONS, POST, PUT");
res.setHeader("Access-Control-Allow-Headers", "Accept, Access-Control-Allow-Headers, Access-Control-Request-Headers, Access-Control-Request-Method, Authorization, Content-Type, Origin, X-Requested-With");
next();
});
app.get('/scripts/:script', function(req, res) {
res.sendFile(req.params.script, {root: config.paths.webs + webId + '/scripts'});
});
app.get('/:script.js', function(req, res) {
res.sendFile(req.params.script + '.js', {root: config.paths.webs});
});
// This routes correctly the index
app.get('/:id', function(req, res) {
webId = req.params.id;
res.sendFile('index.html', {root: config.paths.webs + webId});
});
// This DID NOT work
app.get('/:id/:page', function(req, res) {
//Some code here...
});
https.createServer(options, app).listen(443, function() {
console.log("NodeJS secure server started at port 443");
});