Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
I am Blue Web engineer @ YouMeb
Slide 2
Slide 2 text
⽤用nginx 1. SEO基礎 本⽇日⼤大綱 2. How to make SPA app SEO friendly 3. 如何⾃自動化部屬SEO內容? 4. 溫馨⼩小提醒
Slide 3
Slide 3 text
SEO 基礎
Slide 4
Slide 4 text
Web Crawler
Slide 5
Slide 5 text
講到蜘蛛...我就想到.... 三級的天擎坦克被它摧毀了T.T 蜘蛛好像很厲害?
Slide 6
Slide 6 text
! SEO crawler 並⾮非很聰明
Slide 7
Slide 7 text
這是title
Hello World!
{{ title }} //do some ajax awesome thing.. 靜態網⾴頁(無ajax) 靜態網⾴頁(有ajax)
Slide 8
Slide 8 text
So…要如何告訴這些 Crawler 你的網站是⽀支持AJAX呢?
Slide 9
Slide 9 text
www.example.com/ajax.html#mystate 網址有兩種 ! www.example.com/mystate 無hash: 有hash: 如何告訴這些 Crawler 你的網站是⽀支持AJAX呢? www.example.com/#/mystate
Slide 10
Slide 10 text
www.example.com/ajax.html#mystate 從網址下⼿手(有hash) 1. www.example.com/ajax.html#!mystate
Slide 11
Slide 11 text
www.example.com/ajax.html#!mystate 當 Crawler 收到要爬這段網址內容時 www.example.com/ajax.html?_escaped_fragment_=mystate 會對你的server發⼊入下列request (以google crawler 為例)
Slide 12
Slide 12 text
www.example.com/ajax.html?_escaped_fragment_=mystate 你的server接受到這樣的訊息時 回傳 crawler 對應的 SEO Data page/內容 (以google crawler 為例)
Slide 13
Slide 13 text
從網址下⼿手(無hash) 2. 請在加⼊入: www.example.com?_escaped_fragment_=mystate (以google crawler 為例)
Slide 14
Slide 14 text
AngularJS解法 3. 有hash: 無hash:
Slide 15
Slide 15 text
! ⽩白話理解 crawler 對server請求流程
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
google/facebook crawler your app server www.example.com/mypage#!home 會發出⼀一段特殊的請求網址 回傳 SEO data rendering page
Slide 18
Slide 18 text
Make SPA app SEO friendly
Slide 19
Slide 19 text
多數的語⾔言 framework 框架 SPA SEO 解決⽅方案
Slide 20
Slide 20 text
<%= title %>
Hello World!
當餵給crawler前,SEO Data 被先在server端印好輸出 Nodejs EJS hello
Hello World!
Nodejs 印出這些變數 crawler res.render({title:’hello’});
Slide 21
Slide 21 text
每個使⽤用者進來都會先經過SEO data Output 缺點 浪費資源
Slide 22
Slide 22 text
加上...如果前端的⾴頁⾯面只是靜態檔案怎辦? (像是yeoman產⽣生的app)
Slide 23
Slide 23 text
還是要有⼀一個東⻄西去處理餵給crawler SEO data 2. 架⼀一個nodejs server 處理(網址複雜) 1. 直接nginx指向(網址簡單) 3. nodejs+nginx
Slide 24
Slide 24 text
直接nginx處理 但網址複雜很⿇麻煩
Slide 25
Slide 25 text
⼀一台 nodejs server 直接來
Slide 26
Slide 26 text
nginx + nodejs nginx 過濾來⾃自crawler 還是 user ? nodeJS 處理rending page
Slide 27
Slide 27 text
nginx 靜態⾴頁⾯面路徑 SEO server ⼀一般使⽤用者 crawler nodejs server 處理 SEO data render
Slide 28
Slide 28 text
Nginx設定 你的處理SEO data render Nodejs server位置 因為各家的crawler發出請求格式不⼀一 最好⽅方式是⽤用user agent在經過nginx時過濾
Slide 29
Slide 29 text
live demo
Slide 30
Slide 30 text
如何⾃自動化部屬SEO內容
Slide 31
Slide 31 text
⽤用nginx facebook . google friendly SEO data內容 image, title,url, description,og系列
Slide 32
Slide 32 text
! 那網站內容呢?
Slide 33
Slide 33 text
html-snapshots 1. use phantomJS 2. ⽀支援輸出 sitemap.xml, robots.txt, arbitrary input 3. 有grunt版本
Slide 34
Slide 34 text
$ npm install grunt-html-snapshot
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
網站圖⽚片截圖:https://github.com/clkao/prerender-opengraph-image
Slide 37
Slide 37 text
live demo
Slide 38
Slide 38 text
溫馨⼩小提醒
Slide 39
Slide 39 text
⽤用nginx 知此知彼 https://support.google.com/webmasters/answer/164734?hl=zh-Hant 了解 SEO也要了解 search engine policy
Slide 40
Slide 40 text
End.