javascript - 带有 prerender.io 的 nginx/angular/node.js 根 URL

标签 javascript angularjs node.js nginx url-routing

我们有一个使用 Node 、nginx 和 prerender.io 的 Angular SPA .我们的主页被设置为一个唯一的 url(即 www.foo.com/bar),并且在我们的路由中,这个主页捕获了所有没有特别路由的根相对 url 的默认重定向。

我们的问题是这样的: 根 URL www.foo.com 或 www.foo.com/回来时会为 google 和 Facebook 抓取一个空白页面。我们的索引是一个 ng-include 基本模板,所有页面都插入其中,因此我们的根 url 在没有任何真正的 html 正文内容的情况下返回是有道理的。索引中的主要 html:

<div class="st-content">
  <div ng-view="" class="main-content" id="mainView"></div>
  <div ng-include="'/views/footer.html'"></div>
</div> 

此外,我们尝试了其他没有积极结果的解决方案:

  • 索引头中的基本标记链接到“/”,这并没有破坏任何东西……它也没有解决它
  • 307 重定向,无结果
  • nginx 配置看起来不错

注意:在写这个问题时,我想到将主路由更改为“/”:

.when('/', {
    templateUrl: '/views/foo-bar.html',
    title: ‘Foo Bar',
    pageDescription: ‘Lorem Ipsum Foo Bar'
})
    .
    .
    .
.otherwise({
    redirectTo: '/'
});

如果更改为这个,主页抓取仍会显示为空白吗?这不是基本一样的js重定向问题,只是字符少了点吗?

最佳答案

您需要设置 window.prerenderReady 变量。因此,把它放在你的路由 Controller 中:

window.prerenderReady = false;

...这在你的 Controller 的成功回调函数中:

window.prerenderReady = true;

关于javascript - 带有 prerender.io 的 nginx/angular/node.js 根 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080564/

相关文章:

node.js - Ionic 2 已安装,但在 ionic 信息中未显示

javascript - 如何打开 fancybox 内容中的链接 url?

javascript - onmousemove 使用 2 个参数

javascript - 在不使用 HTML 的情况下通过 Javascript 添加 jquery datatables 表页脚

javascript - 如何简化状态相关的 getter,最好是以 SOLID 的方式?

javascript - 向 Controller 注入(inject)服务出现 unpr 错误

node.js - 如何在 Node Webkit 中运行外部 exe?

node.js - 如何在生产中崩溃时自动重启 Node 脚本?

javascript - Angularjs 操作每个 ng-repeat 元素

angularjs - 多个 Protractor 套件未在 chrome 上运行