【问题标题】:Meteor: Static HTML page as rootMeteor:作为根的静态 HTML 页面
【发布时间】:2016-03-27 09:08:43
【问题描述】:

我做了一个流星应用程序,添加了一个 /public 目录,里面全是 .html、.jpeg 等...

这一切都很好,只是转到我的域的根目录不会显示任何内容;我必须输入 /index.html。

如何让我的域根目录转到 public/index.html?

【问题讨论】:

    标签: meteor


    【解决方案1】:

    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) 包。

    【讨论】:

      【解决方案2】:

      Dino 的建议绝对正确,但根据您的描述(“我的域根目录没有显示任何内容”)听起来您可能只想将 index.html 放入您的客户端文件夹并对其进行编辑以适应方式meteor 喜欢它,即删除所有 doctype 声明和 html 标签。之后,当您转到域根目录时,您应该会看到一些东西。

      如果您想提供多个不同的 .html 文件,您可以查看iron-router,它允许您进行服务器端路由。

      【讨论】:

        【解决方案3】:

        使用mywebsite.com/public/index.html 不是标准做法。

        一个原因是您的网站不会在没有导航到mywebsite.com/public 的情况下呈现索引页面。

        但如果您真的想这样做,只需在您的公用文件夹中添加一个公用文件夹即可。

        public/public/index.html

        【讨论】:

          【解决方案4】:

          听起来您想要将 index.html 文件放入流星模板的形式中,然后将该模板定义为用于“/”路径的模板你的路线文件。

          例如,您的模板如下所示:

          <tementer code hereplate name="home">
            <h1>My Home Page</h1>
          </template>
          

          在你的路由器文件中:

          Router.route('/', function() {
           this.render('home');
           this.layout('homeLayout');
          });
          

          这是假设您使用 Iron Router 并且有一个单独的模板文件用于布局。如果您需要更多示例,请告诉我,我很乐意为您提供帮助。

          【讨论】:

            猜你喜欢
            • 2016-06-27
            • 1970-01-01
            • 2021-05-04
            • 2019-03-19
            • 1970-01-01
            • 2016-10-19
            • 1970-01-01
            • 1970-01-01
            • 2012-04-15
            相关资源
            最近更新 更多