Express:基于子域渲染目录
Express: Render directory based on subdomain
这里的问题相当简单:我想根据用户的子域显示不同的 HTML。这是我的。
var app = express();
var userapp = connect();
var serveStatic = require("serve-static");
app.use(vhost("*.localhost", userapp));
userapp.get("*", function (req, res, next) {
// Get the subdomain
var subdomain = "";
for (var i = 0; i < req.get("host").length; i++) {
if (req.get("host").charAt(i) === ".") {
subdomain = req.get("host").substring(0, i);
break;
}
}
// Render the proper HTML file based on the subdomain
userapp.use(serveStatic(path.join("./" + subdomain)));
next();
});
app.listen(4242);
不知道从这里去哪里,什么都没有呈现。谢谢。
问题是您想要动态地使用 serveStatic
,这是不可能的。所以你不能为每个请求更改你的资产文件夹。
相反,您可以自己动态处理请求,如下所示:
app.get('/*', function(req, res) {
const fileName =
req.originalUrl === 'http://localhost:4242/index.html' ?
'index.html' : 'notFound.html';
res.sendFile(path.join(__dirname, fileName));
});
您需要根据 URL 和子域手动找出文件路径。
这里的问题相当简单:我想根据用户的子域显示不同的 HTML。这是我的。
var app = express();
var userapp = connect();
var serveStatic = require("serve-static");
app.use(vhost("*.localhost", userapp));
userapp.get("*", function (req, res, next) {
// Get the subdomain
var subdomain = "";
for (var i = 0; i < req.get("host").length; i++) {
if (req.get("host").charAt(i) === ".") {
subdomain = req.get("host").substring(0, i);
break;
}
}
// Render the proper HTML file based on the subdomain
userapp.use(serveStatic(path.join("./" + subdomain)));
next();
});
app.listen(4242);
不知道从这里去哪里,什么都没有呈现。谢谢。
问题是您想要动态地使用 serveStatic
,这是不可能的。所以你不能为每个请求更改你的资产文件夹。
相反,您可以自己动态处理请求,如下所示:
app.get('/*', function(req, res) {
const fileName =
req.originalUrl === 'http://localhost:4242/index.html' ?
'index.html' : 'notFound.html';
res.sendFile(path.join(__dirname, fileName));
});
您需要根据 URL 和子域手动找出文件路径。