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

时间:2015-03-16 15:22:20

标签: javascript angularjs node.js nginx url-routing

我们有一个使用node,nginx和prerender.io的角度SPA。我们的主页设置为唯一的URL(即www.foo.com/bar),在我们的路由中,此主页捕获所有未经特别路由的根相对URL的默认重定向。

我们的问题是:根网址www.foo.com或www.foo.com/带回谷歌和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重定向问题基本相同,但字符较少?

2 个答案:

答案 0 :(得分:0)

您需要设置window.prerenderReady变量。因此,将它放在路由控制器中:

window.prerenderReady = false;

...这在你的控制器的成功回调函数中:

window.prerenderReady = true;

答案 1 :(得分:0)

不久前我遇到了同样的问题。

您是否存在prerender.io无法运行的代码片段?

就我而言,我正在使用platform.js(https://github.com/bestiejs/platform.js/),并且正在我的appComponent.ts中进行了有关“ platform.name”的测试。这在Prerender.io中不存在,我得到的是空白页。