2014-09-02 76 views
6

對於單頁應用程序,一些高級重寫規則需要在您的服務器conf中實現,以代理網頁爬蟲和社交媒體機器人緩存預先呈現的JavaScript SPA內容版本。Firebase託管搜索引擎優化的SPA的

使用像http://prerender.io

服務你會發現這裏模板的各種服務器配置的規則,證明這種代理: https://prerender.io/getting-started#install-it

使用https://www.firebase.com/docs/hosting/guide/url-redirects-rewrites.html確實火力地堡支持如此複雜的方案?

例如 - 我將如何實現this nginx config使用火力地堡重寫規則:

server { 
    listen 80; 
    server_name example.com; 

    root /path/to/your/root; 
    index index.html; 

    location/{ 
     try_files $uri @prerender; 
    } 

    location @prerender { 
     #proxy_set_header X-Prerender-Token YOUR_TOKEN; 

     set $prerender 0; 
     if ($http_user_agent ~* "baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest") { 
      set $prerender 1; 
     } 
     if ($args ~ "_escaped_fragment_") { 
      set $prerender 1; 
     } 
     if ($http_user_agent ~ "Prerender") { 
      set $prerender 0; 
     } 
     if ($uri ~ "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent)") { 
      set $prerender 0; 
     } 

     if ($prerender = 1) { 
      rewrite .* /$scheme://example.com$request_uri? break; 
      proxy_pass http://service.prerender.io; 
     } 
     if ($prerender = 0) { 
      rewrite .* /index.html break; 
     } 
    } 
} 

作爲一個方面說明 - 我認爲這是偉大的,你們有支持,現對於做這樣的事情:

"rewrites": [ { 
    "source": "**", 
    "destination": "/index.html" 
}] 

但是,發現這真的只能解決SPA面對的一半戰鬥。

+0

謝謝丹!請注意,這看起來像是更適合[email protected]或郵件列表的反饋。這裏有一個具體的問題應該使用SO的Q&A格式來解決嗎? – Kato 2014-09-02 18:55:36

+0

@Kato是啊哈哈,是否可以實現我使用重寫規則引擎鏈接的示例模板中看到的代理規則?我已經更新了這個問題,以便更清楚。 – 2014-09-02 19:03:46

+0

不幸的是,這有點超出了當前重寫規則的範圍。我會讓我們的一位託管專家在這裏進行驗證。 – Kato 2014-09-02 19:07:52

回答

12

火力地堡的核心開發者在這裏

火力地堡宣佈基本的SEO支持,這使得它與Googlebot的在NG-conf的2015年三月份的工作。公告16:30附近請參見this presentation

Firebase仍然致力於在prerender.io和Brombone之類的預渲染工具上工作,以便爲SEO提供更復雜的選項。但是,如果您升級到最新版本的Firebase客戶端(本帖子發佈時爲2.2.4),這應該是「正常工作」。

+7

**聖誕願望** - 希望全力支持(非谷歌搜索引擎,Facebook OpenGraph標籤,Twitter卡等),而不僅僅是谷歌的搜索引擎。 – JisuKim82 2015-12-24 18:29:58

+0

嗨@jacobawenger有沒有更新? firbase託管的SPA在使用像slack或fb這樣的共享工具時效果不佳。有我們可以添加的工具或插件嗎? – 2017-06-09 18:02:53

+0

查看https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html。 – jwngr 2017-06-10 13:09:20