我在Openshift上有应用程序(Node.js 0.10,MongoDB 2.4)
我已遵循此处的说明
developers.openshift.com/en/getting-started-debian-ubuntu.html
我已经成功修改了我的应用程序
当我从此网址http://kunsento-mbtest1.rhcloud.com/运行时
它工作正常。你可以尝试一下
如果我尝试使用此网址http://kunsento-mbtest1.rhcloud.com/index.html
我得到"无法获得/index.html"
如果我尝试访问子目录中的任何其他html文件,我会收到同样的错误。
请您建议如何解决?
谢谢
P.S。我在这里找到了类似的票;
openshift node.js Cannot Get /
但我不明白如何应用解决方案"您确定提交公用文件夹吗?"
答案 0 :(得分:1)
当您检查OpenShift的nodejs盒式磁带附带的server.js
时,您会看到已定义/
路由以提供索引文件:
self.routes['/'] = function(req, res)
{
res.setHeader('Content-Type', 'text/html');
res.send(self.cache_get('index.html') );
};
...因此,在访问您的域名时,您将获得索引文件。
路由通常是为Web应用程序提供的任何其他功能创建的。
如果您想提供静态文件,可以像the example you have linked中一样创建公共目录。
假设您正在使用nodejs盒式磁带附带的server.js
,您只需将self.app.use(express.static(__dirname + '/public'));
添加到initializeServer
函数中即可提供public
目录的内容。为清晰起见,以下是整个块的外观:
/**
* Initialize the server (express) and create the routes and register
* the handlers.
*/
self.initializeServer = function() {
self.createRoutes();
self.app = express.createServer();
// Add handlers for the app (from the routes).
for (var r in self.routes) {
self.app.get(r, self.routes[r]);
}
// static files
self.app.use(express.static(__dirname + '/public'));
};
您可能还想查看this了解更多详情。