簡體   English   中英

nginx/angular/node.js 根 URL 和 prerender.io

[英]nginx/angular/node.js root URL with prerender.io

我們有一個使用 node、nginx 和prerender.io的角度 SPA。 我們的主頁被設置為一個唯一的 url(即 www.foo.com/bar),並且在我們的路由中,這個主頁捕獲了所有沒有特別路由的相對於 root 的 url 的默認重定向。

我們的問題是:根 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重定向問題,但字符更少嗎?

您需要設置window.prerenderReady變量。 因此,把它放在你的路由控制器中:

window.prerenderReady = false;

...這在您的控制器的成功回調函數中:

window.prerenderReady = true;

不久前我遇到了同樣的問題。

您是否有 prerender.io 無法運行的代碼片段?

就我而言,我使用的是 platform.js ( https://github.com/bestiejs/platform.js/ ),並在我的 appComponent.ts 中進行了關於“platform.name”的測試。 這在 Prerender.io 中不存在,我得到了一個空白頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM