2015-03-16 20 views
12

Düğüm, nginx ve prerender.io kullanarak köşeli bir SPA'mız var. Ana sayfamız benzersiz bir url (yani www.foo.com/bar) olarak belirlendi ve bizim yönlendirme işlemimizde bu ana sayfa, aksi yönde özel olarak yönlendirilmemiş tüm kök göreli URL'lerin varsayılan yönlendirmesini yakalar.nginx/angular/node.js prerender.io ile kök URL

Sorunumuz: kök url www.foo.com veya www.foo.com/ google ve Facebook için boş bir sayfa kazıma ile geri geliyor. İndeksimiz, tüm sayfaların içine yerleştirildiği bir ng-temel şablonudur, bu yüzden kök url'imizin herhangi bir gerçek html gövde içeriği olmadan geri gelmesi mantıklıdır. Endekste Ana html: Ek

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

, biz olumlu sonuç olmadan diğer çözümler denedi: endeksi kafasına

  • baz etiketi bağlantı '/', aynı zamanda yaptığı bir şey ... kırmadılar hangi o
  • 307 yönlendirmesi gidermezse,
  • nginx yapılandırmaları hiçbir sonuç iyi bakmak

Not: bana öyle geldi bu soru için ‘/ 'ev yönlendirme değiştirmek yazılı olarak:

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

ev kazıma hala boş olarak gösterecek? Bu temelde aynı js yönlendirme sorunu değil, daha az karakterle mi?

+0

ben alamadım senin ' foo.com veya www.foo.com'daki tüm istekler için index.html. Bu mu? Bu arada HTML5 modunu kullanıyor musunuz? –

+2

Bana söz konusu gerçek URL'yi gönderir misiniz? Test etmekten ve her şeyin doğru kurulduğundan emin olmak için orada neler olduğunu görmekten mutlu olurum. [email protected] –

+0

@DanM. Nginx, foo.com'a yapılan tüm istekler için 301 yönlendirmesi için yapılandırıldı. www.foo.com daha sonra node.js. Strace-ing nginx ve node, nginx'in düğüm sunucusuna uygun bir şekilde proxy olduğunu gösterir, bu noktada düğüm isteklerini ve yanıtlarını görürüz. Ayrıca, HTML5 modunu kullanıyoruz. –

cevap

0

window.prerenderReady değişkenini ayarlamanız gerekir. senin kontrolörün başarısı geri arama işlevi bu

window.prerenderReady = false; 

... ve: Böylece, rotanız denetleyicisi bu koymak nginx ile yanıt yapılandırılmışsa

window.prerenderReady = true;