Astro 部落格的 SEO 設定與 Google Search Console 教學
整理 Astro 部落格的 SEO 設定:自動產生 sitemap、設定 canonical 與結構化資料、用 noindex 排除不重要的頁面,再到 Google Search Console 驗證網站並提交收錄,附上驗證檔放錯位置的解法。

網站架好、網域也綁好之後,下一個問題是:Google 怎麼知道這個網站存在?這篇接續上一篇架站的流程,整理如何替 Astro 部落格做的 SEO 設定,以及在 Google Search Console 驗證網站、提交收錄的步驟。
技術設定能做什麼
SEO 的技術設定,作用是讓搜尋引擎找得到、讀得懂你的網站。它不會讓排名自動變好,排名主要還是看內容的品質與數量,以及時間的累積。所以下面這些設定做一次就好,做完之後該花時間的地方是寫文章。
另外,網路上常看到要設定的 <meta name="keywords">,Google 早已不使用它,不用特地加了。
一、設定網站網址
Astro 的 sitemap、RSS 與 canonical 網址,都是從設定檔裡的 site 產生的,所以第一件事是把它填對:
// astro.config.mjs
import { defineConfig } from 'astro/config';
export default defineConfig({
site: 'https://你的網域',
trailingSlash: 'always',
});
trailingSlash: 'always' 的用意是讓每個網址統一以斜線結尾,避免同一頁同時出現有斜線與沒斜線兩種網址。
如果你之後換了網域,這裡要一起改,並且重新部署。
二、自動產生 sitemap
sitemap 是一份網站的頁面清單,讓搜尋引擎知道有哪些頁面可以看。Astro 有官方的整合套件:
npm install @astrojs/sitemap
import sitemap from '@astrojs/sitemap';
export default defineConfig({
site: 'https://你的網域',
integrations: [
sitemap({
// 不收錄 404、標籤頁與歸檔頁
filter: (page) => !/\/(404|tags|archive)\//.test(page),
}),
],
});
建置之後會自動產生 sitemap-index.xml。用 filter 把標籤頁、歸檔頁與 404 排除,原因在後面「不重要的頁面」那一節說明。
三、robots.txt
public/robots.txt 告訴搜尋引擎哪些路徑不用爬,並且指出 sitemap 的位置:
User-agent: *
Allow: /
Disallow: /admin/
Sitemap: https://你的網域/sitemap-index.xml
小細節:最後一行的 Sitemap 必須寫完整的檔案網址,如果只寫了網域,沒有加上 /sitemap-index.xml,等於沒有告訴搜尋引擎 sitemap 在哪裡。另外,這個檔案是手寫的,換網域時不會自動更新,要記得一起改。
四、每頁的標題、摘要與分享圖
把這些設定集中在共用的版面檔(Base.astro),每個頁面傳入自己的資料:
- 標題:每頁不同,格式是「頁面標題|網站名稱」,首頁則用網站名稱加一句標語。
- 摘要(description):搜尋結果常會直接拿它當說明文字,所以每篇文章都要自己寫,我的做法是寫成 80 到 120 字的完整句子。
- canonical:告訴搜尋引擎「這一頁的正式網址是什麼」,由
site加上目前路徑產生。 - 分享圖(Open Graph):貼到 LINE、Facebook、Threads 時顯示的預覽圖。文章有封面就用封面,沒有的話用一張預設圖,建議尺寸 1200×630。
五、結構化資料
結構化資料是用 JSON-LD 格式,直接告訴搜尋引擎「這是一篇文章,作者是誰、什麼時候發布」。替每篇文章加上 BlogPosting:
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "標題",
"description": "摘要",
"datePublished": "2026-10-31T00:00:00.000Z",
"author": { "@type": "Person", "name": "作者名稱" }
}
另外也加了麵包屑(BreadcrumbList),標示「首頁 → 分類 → 文章」的層級。結構化資料可以幫助搜尋引擎理解頁面,但不保證一定會出現特殊的搜尋結果樣式。
六、不重要的頁面設定 noindex
標籤頁與歸檔頁的內容,只是把已經有的文章重新排列,本身沒有獨立的內容。把它們也收錄,可能分散搜尋引擎對主要頁面的注意力。所以要在這些頁面加上:
<meta name="robots" content="noindex,follow" />
noindex 是請搜尋引擎不要收錄,follow 則仍然允許它順著頁面上的連結,去找到其他文章。再搭配前面 sitemap 的 filter,這些頁面既不會被列進清單,也不會被收錄。404 頁面同理。
七、Google Search Console
設定完之後,部署上線,接著到 Google Search Console 登記網站。
新增資源:兩種類型
- 網域:輸入網域名稱(不含 https)。它會涵蓋
www、其他子網域與 http/https,必須用 DNS 驗證。 - 網址前置字元:輸入完整網址,只涵蓋該網址,驗證方式比較多,包括上傳 HTML 檔案。
如果你的網域託管在 Cloudflare,DNS 驗證最簡單方便:Google 會給你一串 TXT 紀錄,回頭貼到 Cloudflare 的 DNS 設定,不用再上傳任何檔案。
用 HTML 檔案驗證時注意
如果選的是網址前置字元,用上傳檔案的方式驗證。Google 會讓你下載一個 google 開頭的 .html 檔,要放到網站根目錄。這邊注意如果直接把它放在專案的根目錄,部署後 Google 會一直說找不到。
原因是 Astro 只會把 public/ 資料夾裡的檔案,複製到建置的結果中:

所以必須把檔案移進 public/資料夾中,重新部署,再用瀏覽器打開 你的網域/驗證檔名.html,確認畫面上有出現那一行驗證文字,最後回到 Search Console 按「驗證」。
驗證成功之後,這個檔案要一直留著,不要刪掉或改內容,否則驗證會失效。
提交 sitemap
- 在 Search Console 左側選單點「Sitemap」。
- 輸入
sitemap-index.xml,按送出。 - 狀態顯示「成功」就完成了。剛提交時偶爾會先顯示無法擷取,過一陣子通常會自己恢復。
要求建立索引
提交 sitemap 之後,還可以針對重要的網址,請 Google 優先處理:
- 在最上方的搜尋列貼上完整網址,按 Enter。
- 如果顯示「網址不在 Google 上」,點選「要求建立索引」。
這個功能有每日次數限制,所以只對首頁與最新的幾篇文章使用就好,不需要大量送出。
收錄要等多久
新網站通常需要一段時間,才會被收錄並出現在搜尋結果裡,幾天到幾週都有可能,沒辦法保證。Search Console 的「網頁」報表會列出哪些網址已經收錄、哪些被排除。標籤頁、歸檔頁與 404 出現在「已排除」是正常的,那就是刻意設定的 noindex。
之後可以固定看「成效」報表,它會顯示搜尋結果的曝光次數、點擊次數與搜尋字詞。前幾週數字是零很正常,等資料累積起來,就可以依照流量判斷接下來要做什麼。
常見問題整理
- robots.txt 的 Sitemap 寫不完整:要寫成
https://你的網域/sitemap-index.xml。 - 換網域後 sitemap 或 robots.txt 還是舊網址:
site會自動更新,robots.txt是手寫的,要自己改。 - Search Console 找不到驗證檔:檔案要放在
public/,不是專案根目錄,並確認部署後瀏覽器能打開。 - 驗證通過後刪掉了驗證檔:驗證會失效,要重新驗證。
- 標籤頁與歸檔頁沒有被收錄:這是設定的結果,不是錯誤。
小結
這些設定做完,搜尋引擎就能順利找到、讀懂你的網站。透過這些設定SEO的方法完整優化網站,並且耐心等待收錄與累積。