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