我有一个 Express 应用程序,它只是默认的空白应用程序。然后我添加了这一行:
app.use(serveStatic('docs/public', {'index': ['index.html', 'index.htm']}))
提供我的 docs/public
目录的内容。这非常有效,但它被提供给我的应用程序的根目录,因此我不再看到默认的快速索引页面。
我希望将静态 html(我目前将其视为我的索引)视为子域,例如blog.mydomain.com。或者至少作为 mydomain.com/blog。如何向子域提供静态内容?
注意:静态文件名和文件夹无法更改,因为我的 ./docs 目录是一个 hexo 项目,任何更改都会破坏 docs/public 文件夹中静态内容的生成。
我尝试使用 express-subdomain
所以我在我的 app.js 中添加了这样的代码:
var router = express.Router();
router.use(serveStatic('docs/public', {'index': ['index.html', 'index.htm']}))
app.use(subdomain('docs', router));
但是,如果我运行它,我会在 http://localhost:3000/
(不是静态页面)获得快速索引页面,这正是我想要的,但是如果我转到 http://docs.localhost:3000/
然后我没有得到我的静态内容,仍然是原始的快速索引。事实上,如果我删除子域代码并运行应用程序,导航到文档子域,我仍然会得到相同的结果。
我也尝试过使用子域模块:
app.use(subdomain('docs', serveStatic('docs/public', {'index': ['index.html', 'index.htm']})));
但是,这与上面的结果相同(不提供任何静态内容)。
那么我如何才能提供当前在子域上提供的静态内容呢?
最佳答案
@GeorgeEdwards 在您的示例代码中,您在子域中间件之前调用了静态中间件。顺序很重要......它应该是这样的:
app.use(subdomain('docs', express.static('docs/public')));
这意味着任何带有 docs
子域的请求都将由快速静态中间件处理。
关于node.js - 使用 Express 将静态内容提供给子域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809158/