SEO 跟 SPA

花了一天做好了 SEO 相關的功能。

我們的網站大多數的頁面是登入後才能看見內容的,因此搜索引擎的 crawler 即使來訪也看不到東西,為了支持 SEO 只好把一些與個資無關的頁面打開,讓沒有登入的人也可以看見內容,這也會方便日後使用者在 social network 上分享。接著要思考的問題:

  • 公開的網址跟登入後的網址是否為同一個?
  • 由於使用了 Angular,所有的網頁即使網址不同但其實是同一頁,(SPA: single page app),搜索引擎支持嗎?
  • 我們的網頁是依參數來決定內容,排列組合起來有千萬個,如何讓搜索引擎來 crawl ?

結果:

  • 決定把公開跟私密的定義成不同的 route,有些程式可以共用,但是 view 是分開的,維護上也比較容易,免去一堆 ng-if 來控制什麼時候顯示什麼內容。當使用者分享時要產生新的分享網址,而用公開網址進來時如果發現使用者已經登入,可以轉到私密網址去。
  • Google 是支持 SPA 的
    這篇文章有詳細說明 AngularJS & SEO – finally a piece of cake
  • Bing 不支持 SPA,我沒有再進一步去找解決方案。
  • Update meta tag 我選用了這個
    https://github.com/jvandemo/angular-update-meta

只要在 view 裡面加上 update-meta directive 就可以更新 meta tag:

<update-meta name="description" content="{{desc}}"></update-meta>

我沒注意到 keyword 是更新,在原來的網頁上要先有 meta tag 要不然不會更新,還以為是我的程式有問題,花時間走了點冤枉路。

  • 我們決定自己 submit sitemap.xml 來告訴 Google 我們有那些網頁,不過怕 Google 把我們當垃圾內容網站,所以一開始不會馬上給幾百萬個連結。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s