【发布时间】:2016-03-27 09:08:43
【问题描述】:
我做了一个流星应用程序,添加了一个 /public 目录,里面全是 .html、.jpeg 等...
这一切都很好,只是转到我的域的根目录不会显示任何内容;我必须输入 /index.html。
如何让我的域根目录转到 public/index.html?
【问题讨论】:
标签: meteor
我做了一个流星应用程序,添加了一个 /public 目录,里面全是 .html、.jpeg 等...
这一切都很好,只是转到我的域的根目录不会显示任何内容;我必须输入 /index.html。
如何让我的域根目录转到 public/index.html?
【问题讨论】:
标签: meteor
Meteor 并没有真正考虑到提供静态内容(以 HTML 的形式)。 public 文件夹实际上用于提供网站图标之类的内容,也可能在这里或那里提供图像 (http://docs.meteor.com/#structuringyourapp)。
虽然您在技术上可以执行以下操作:
if (Meteor.isClient) {
window.location = 'index.html';
}
这不是它应该如何工作的。这带来了其他问题,例如确保这只适用于/ 路由。
更好的解决方案是让nginx 站在正在运行的 Meteor 实例前面并直接提供静态内容。
这完全取决于您为什么尝试像这样服务index.html。如果是出于 SEO 目的,只需使用普通 Meteor 模板(和路由)并使用 spiderable (http://docs.meteor.com/#spiderable) 包。
【讨论】:
Dino 的建议绝对正确,但根据您的描述(“我的域根目录没有显示任何内容”)听起来您可能只想将 index.html 放入您的客户端文件夹并对其进行编辑以适应方式meteor 喜欢它,即删除所有 doctype 声明和 html 标签。之后,当您转到域根目录时,您应该会看到一些东西。
如果您想提供多个不同的 .html 文件,您可以查看iron-router,它允许您进行服务器端路由。
【讨论】:
使用mywebsite.com/public/index.html 不是标准做法。
一个原因是您的网站不会在没有导航到mywebsite.com/public 的情况下呈现索引页面。
但如果您真的想这样做,只需在您的公用文件夹中添加一个公用文件夹即可。
public/public/index.html
【讨论】:
听起来您想要将 index.html 文件放入流星模板的形式中,然后将该模板定义为用于“/”路径的模板你的路线文件。
例如,您的模板如下所示:
<tementer code hereplate name="home">
<h1>My Home Page</h1>
</template>
在你的路由器文件中:
Router.route('/', function() {
this.render('home');
this.layout('homeLayout');
});
这是假设您使用 Iron Router 并且有一个单独的模板文件用于布局。如果您需要更多示例,请告诉我,我很乐意为您提供帮助。
【讨论】: