天天看點

部落格域名更換記錄以及衍生問題解決方案

拖延了半年後,我終于在最近把我的域名 https://shanyue.tech> 通過了備案,趁此對我的域名進行更換: 由 更換到了 如果剛開始就使用新域名,倒是很簡單。但是更換域名就需要做一些額外的瑣碎的東西了,如 https,反向代理,SEO需求等等,記錄一下

本文位址: https://shanyue.tech/post/domain-update-record/

https

在制作證書時在 domains 中添加新域名

certbot -d shanyue.tech -d xiange.tech -d *.shanyue.tech -d *.xiange.tech ...           

reverse proxy

在反向代理中使用新域名代替舊有域名,以下是 traefik 在 docker 的 compose file 的示例,同時需要保留新老域名

version: "3"
services:
  blog:
    build:
      context: .
    restart: always
    labels:
      - "traefik.old.frontend.rule=Host:blog.xiange.tech"
      - "traefik.blog.frontend.rule=Host:shanyue.tech"           

301 & SEO

為了防止使用舊網址打開失敗,需要進行301重定向,重定向之前思考兩個問題

  1. 為什麼不使用 302
  2. 為什麼不給站點設定多個 domain

答案是為了

SEO

,使用 301 可以把搜尋引擎原域名的收錄給帶過去,而使用多個 domain 會降低頁面的權重

百度給的建議是新舊網站并存一段時間,然後進行 301

version: "3"
services:
  blog:
    build:
      context: .
    restart: always
    labels:
      - "traefik.old.frontend.rule=Host:blog.xiange.tech"
      # 重定向至新域名
      - "traefik.old.frontend.redirect.regex=^https?://blog.xiange.tech/(.*)"
      - "traefik.old.frontend.redirect.replacement=https://shanyue.tech/$$1"

      # 設定永久重定向: 301
      - "traefik.old.frontend.redirect.permanent=true"           

sitemap.xml & robots.txt

這兩個是為了 SEO,當站點新添了頁面,可以使用 sitmeap 更好地通知搜尋引擎的小蜘蛛們,友善新頁面更快的收錄

需要更改 sitemap 中 的 url.loc 的絕對位址為新域名,以下是一個 sitemap 的樣例,你也可以通過

https://shanyue.tech/sitemap.xml

通路

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://blog.xiange.tech/post/login-input-style/</loc>
    <lastmod>2019-04-23T11:12:38+08:00</lastmod>
  </url>`
</urlset>           

依賴應用

在我部落格的評論系統中使用了 github 的

OAuth Apps

,需要更改首頁及回調位址

  • Homepage URL
  • Authorization callback URL

總結

鑒于隻是一個簡單的部落格,應該沒有什麼工作量了

如果域名需要 SEO,也就比較麻煩些,如果不需要的話,基本可以使用 nginx 或者 traefik 配置多個域名就可以了

繼續閱讀