iT邦幫忙

0

使用Django來製作sitemap

  • 分享至 

  • xImage
  •  

前言
sitemap雖然對SEO來說,不一定有加分的效果。但是sitemap還是能幫助搜尋引擎對你的網站進行索引
Django就自帶了相關的套件來幫助快速製作sitemap,使用該套件可以自動處理分頁問題,也不用另外在寫方法去跟資料庫交互,真的很方便

配置

  1. 需要配置'django.contrib.sitemaps'到settings.py中的INSTALLED_APPS中
    套用這個配置不會額外安裝任何資料表,只是為了要讓Loader()能找到初始模板
  2. 需要確保在settings.py中Temaplates配置的APP_DIRS為True
  3. 有的網站還有提到需要添加django.contrib.sites等配置,除非同一個專案下有不同domain要調控或是其他因素才要設置,我自己是沒用到,我理解錯誤的話可以在下方糾正我~

步驟

  1. 在跟settings.py同級的目錄下新建sitemap.py檔

  2. 在sitemap.py引入django.contrib.sitemaps.Sitemap以及你要用的model

  3. 在sitemap.py檔中建立Sitemap的子類
    https://ithelp.ithome.com.tw/upload/images/20230815/201618666e4XJwPrHI.png
    其中屬性的chagefreq跟priority去看參考資料裡面給的文檔,另外如果網站是https要加上protocol

該類的方法只有items是一定要的,lastmod跟location不是必須,其他還有很多不同的方法可以去看官方文檔
以下稍微說一下我使用的三個方法:
items
是必須的,將你要篩選的資料選出來,返回對象的sequence或QuerySet方法

loaction
可選項,返回對象的絕對路徑,所以如果對象本身沒有get_absolute_url()會報錯

lastmod
可選項,返回datetime,可以自己設定或是對象的datetime屬性

  1. 最後在底下寫下字典sitemaps,方便urls.py去調用特定的類https://ithelp.ithome.com.tw/upload/images/20230815/201618660alZrQ4Fbe.png

  2. 接著去urls.py中設定好url
    https://ithelp.ithome.com.tw/upload/images/20230815/20161866kK04O7hEGh.png

  3. 就可以在sitemap.xml路徑下看到xml了
    https://ithelp.ithome.com.tw/upload/images/20230815/20161866nKTt1bqNki.png

但是當今天需要為每個sitemap設置sitemap index時,我們就需要修改一下方法。至於sitemap index也就是將為每一個sitemap去製作索引,讓瀏覽器知道要去看這個站點的所有sitemap應該怎麼走

  1. 先在urls.py中引入django.contrib.sitemaps.views中的index方法
    from django.contrib.sitemaps.views import index
  2. 接著修改路由配置
    https://ithelp.ithome.com.tw/upload/images/20230815/201618669xUrDQBK8g.png

接著我們就可以看到結果啦~
首先去sitemap.xml
https://ithelp.ithome.com.tw/upload/images/20230815/20161866r0bZOSjp2P.png

接著去sitemap-brand.xml
https://ithelp.ithome.com.tw/upload/images/20230815/20161866ofYxSBNhFT.png

可以看到結果就如同預期一樣~

參考
官方文檔:https://docs.djangoproject.com/zh-hans/3.2/ref/contrib/sitemaps/
sitemap格式文檔:https://www.sitemaps.org/protocol.html


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言