【发布时间】:2015-05-18 18:54:44
【问题描述】:
我们有一个使用节点、nginx 和prerender.io 的角度 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 重定向问题,只是字符少了吗?
【问题讨论】:
-
我不知道 nginx 是否配置为使用您的
index.html响应foo.com或www.foo.com上的所有请求。是吗?对了,你用的是 HTML5 模式吗? -
你能把有问题的实际网址发给我吗?我很乐意对其进行测试,看看那里发生了什么,以确保一切设置正确。 todd@prerender.io
-
@DanM。 Nginx 配置为对 foo.com 的所有请求进行 301 重定向。然后将 www.foo.com 代理到 node.js。 strace-ing nginx 和 node 表明 nginx 正在适当地代理到节点服务器,此时我们可以看到节点的请求和响应。另外,我们使用的是 HTML5 模式。
-
这听起来很对。当您说“空白”页面抓取时,您是指空的 还是没有动态内容的 Angular 索引?
-
@DanM。感谢cmets。 “空白”是指没有动态内容的 Angular 索引。我们正在索引中使用元片段……就预渲染而言,来自 Prerender 的 Todd 一直在向我们发送有关设置问题的电子邮件。解决此问题后,我将分享反馈
标签: javascript angularjs node.js nginx url-routing