最近剛好在處理 Sitemap 的問題,如果有在做 SOE 的朋友應該都知道 Sitemap 的重要性,他可以為搜索引擎的蜘蛛提供瀏覽整個網站的連結,藉此讓搜尋引擎更認識你的網站,後來就想在自己的部落格來玩玩看,就找到這個方法,不使用任何 Jekyll 套件,就能輕鬆產出 sitemap.xml。
因為我的部落格是使用 Github Pages 的服務,所以 Jekyll 是執行
--safe模式,因此也不能使用客製套件
Sitemap 格式
sitemap.xml 裡面包含網站內的各個連結,他有個固定的格式,如下:
1 | <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
Sitemap 必須符合以下條件:
- 以起始
<urlset>標記做為開頭,並以結束</urlset>標記結束 - 指定
<urlset>內的名稱領域 (通訊協定標準) - 讓每個 URL 中包含一個
<url>項目做為母層 XML 標記 - 在每個
<url>母層標記包含一個<loc>子層項目
每一組 <url> 就代表一個頁面,其中屬性說明如下:
loc網頁的 URLlastmod檔案的最後修改日期changefreq網頁可能變更的頻率,有效值如下:- always
- hourly
- daily
- weekly
- monthly
- yearly
- never
priority此 URL 相對於您網站上的其他 URL 的優先順序,有效值從 0.0 到 1.0
自動產生 sitemap.xml 內容
在 Jekyll 我們可以透過 `{% for post in site.posts %}` 來遍巡文章,或 `{% for page in site.pages %}` 來遍尋頁面,藉此取得各頁面的 metadata,然後寫入 xml 中,因此可以在 jekyll 專案裡面建立一個 `sitemap.xml` 檔案,內容如下:透過上面的程式碼,我們可以在部落格文章(post)或頁面(page)中,使用下列 metadata 來提供或修改相關資訊,格式如下:
1 | sitemap: |
補充說明
在 Google Search Console 的提交 Sitemap 說明文件中提到, Sitemap 檔案要使用 UTF-8 編碼,如果遇到下列字元,需轉換成溢出碼。
| 字元 | 逸出碼 |
|---|---|
| & 符號 | & |
| 單引號 | ' |
| 雙引號 | " |
| 大於 | > |
| 小於 | < |
參考資料: