node.js - 使用 Express 将静态内容提供给子域?

标签 node.js express server subdomain

我有一个 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/

相关文章:

javascript - 从 Node.js 客户端库返回的 GCP AutoML 数据集 ID 与实际数据集 ID 不匹配

node.js - Angular 4 和 SEO

mysql - Sequelize : Concat fields in WHERE LIKE clause

javascript - 使用 MongoDB 更新功能无法正确更改用户名?

git - 定期 git fetch 的副作用

tomcat - 服务器 MyEclipse Tomcat v7.0 无法在 45 秒内启动。如果服务器需要更多时间,请尝试在服务器编辑器中增加超时

javascript - 是否可以使用 FlatBuffers 将序列化数据流式传输到文件中?

javascript - 跨不同 Node.js 路由的 Socket.io

javascript - express4.2.0 session 未定义

linux - 无法停止linux中的tomcat服务器