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 和子域手动找出文件路径。