The Mom Test,slug 建議設定為 the-mom-test。如果舊資料、匯入、外掛或其他建立流程讓 slug 真的存成 The Mom Test,網址可能出現 %20,在某些路由情況下造成標籤頁 404。修正時應保留標籤名稱,只調整 slug,並視舊網址是否曾公開或被索引,補上 301 轉址。
有些 WordPress 404 問題不是文章被刪掉,也不是分類不存在,而是網址本身的 slug 留下了不乾淨的格式。
整理 404 Logs 時,很容易遇到一種讓人困惑的情況:WordPress 後台明明有某個標籤,文章也確實有使用它,但前台請求的網址卻出現:
/tag/The%20Mom%20Test/
乍看之下只是網址把空格轉成 %20,似乎沒什麼大問題;實際測試卻可能發現,這個標籤頁直接回傳 404。進一步檢查才會發現,真正異常的地方不是標籤名稱,而是 slug 直接被存成了:
The Mom Test
修正時不用把標籤名稱改掉,只要把 slug 改成:
the-mom-test
新的標籤頁就能用乾淨、穩定的網址存取。這個案例很適合提醒所有使用 WordPress 經營內容網站的人:標籤名稱可以照正常語言寫,但 slug 最好使用小寫英文與連字號,不要把空格直接留在 slug 裡。
標籤名稱可以有空格,真正要注意的是 slug
WordPress 的「標籤名稱」和「slug」是兩件不同的事。
標籤名稱是訪客看到的文字,可以自然書寫,例如:
- The Mom Test
- Google Tag Manager
- Never Split the Difference
- WordPress LMS
這些名稱保留空格完全沒有問題,因為它們是給人看的。
slug 則是網址的一部分,應該盡量簡單、穩定,而且適合放進 URL。比較好的設定方式是:
| 標籤名稱 | 建議 slug |
|---|---|
| The Mom Test | the-mom-test |
| Google Tag Manager | google-tag-manager |
| Never Split the Difference | never-split-the-difference |
| WordPress LMS | wordpress-lms |
因此,重點不是「標籤不能有空格」,而是不要把帶空格的名稱原封不動拿來當 slug。
為什麼網址中的空格會變成 %20?
URL 在傳輸時不能把一般空格直接當成普通字元處理,因此瀏覽器或系統會進行百分比編碼(percent-encoding),空格常會表現為 %20。
如果 slug 真的是:
The Mom Test
請求網址就可能變成:
/tag/The%20Mom%20Test/
%20 本身不是「錯誤碼」,也不是看到它就代表 SEO 有問題。真正的問題是:WordPress 的分類法重寫規則(taxonomy rewrite)、伺服器規則、外掛或既有資料如果沒有把這個格式正確解析成同一個標籤,就可能找不到對應的分類法詞彙(term),最後回傳 404。
所以不能簡化成「網址看到 %20 一定壞掉」。比較準確的說法是:slug 留空格會增加網址處理與路由不一致的風險,而乾淨的連字號 slug 通常更穩定。
正常 WordPress 不是會自動把空格改成連字號嗎?
會。WordPress Core 本身有 sanitize_title() 與 sanitize_title_with_dashes() 這類處理機制。正常建立文章、分類或標籤時,WordPress 通常會把空白整理成適合網址使用的格式。
例如類似「This Long Title」的文字,正常情況下會整理成以連字號分隔的 slug,而不是直接把空格保留在網址欄位裡。
但實務上,網站經營久了之後,資料不一定永遠只經過標準後台流程。以下情況都可能留下歷史資料:
- 早期版本建立的標籤。
- 資料庫匯入或搬站。
- 外掛批次建立分類法詞彙(taxonomy term)。
- 自製程式、API 或其他自動化流程寫入。
- 曾經修改過 slug,再經過不同工具同步。
因此,不要因為「WordPress 理論上會自動處理」就假設資料庫裡一定沒有異常 slug。最可靠的方式還是直接檢查實際 term slug 與前台網址。
為什麼這不是小事?因為 Tag 網址會被網站反覆使用
標籤頁不像一個完全獨立、只會被打開一次的頁面。只要文章有套用某個 Tag,WordPress 佈景主題、文章資訊區、標籤雲、相關文章、Sitemap 或其他外掛,都可能輸出這個標籤網址。
假設一個網站只有 3 個異常 Tag,問題可能不明顯;但內容累積幾年後,若有幾十個、甚至上百個 Tag 的 slug 格式不一致,404 Logs 就可能開始出現一整批帶 %20 的網址。
這時候真正的成本不是單一 404,而是維護複雜度會一直增加:
- 搜尋引擎可能持續重新請求舊 Tag 網址。
- 文章頁輸出的標籤連結可能把爬蟲帶去 404。
- 網站搬家、換外掛或整理網址時,更難判斷哪些網址才是正式版本。
- 日後要分析 404 Logs,會被大量歷史 Tag 網址干擾。
- 同一個標籤可能同時留下大小寫、空格編碼與新 slug 等多個網址版本。
因此,整理 Tag slug 的目的不是為了「看起來漂亮」,而是讓網站長期只保留一個清楚、穩定的正式網址。對文章很多、Tag 很多的網站來說,這會直接降低後續 SEO 與站務維護的成本。
這種問題為什麼會出現在 404 Logs?
當搜尋引擎、其他爬蟲、站內連結或訪客請求舊標籤網址,而 WordPress 找不到對應內容時,就可能留下 404 紀錄。
例如舊網址:
/tag/The%20Mom%20Test/
即使你現在已經沒有主動貼這條連結,搜尋引擎過去抓過、文章頁曾經輸出過 Tag 連結、瀏覽器收藏、外部網站引用,甚至只是爬蟲重新檢查舊網址,都可能再次請求它。
所以 404 Log 裡的 Hit 不應直接理解成「有幾個真人點擊」。它只能先告訴你:這個網址曾經被請求,而且當時沒有正常取得內容。
排查時,應先確認它到底是垃圾掃描、已停用內容、舊網址,還是網站現在仍然存在的結構問題。不要看到 404 就全部導向首頁。
正確設定方式:The Mom Test → the-mom-test
如果你正在新增 WordPress 標籤,最簡單的原則就是把「顯示名稱」和「網址 slug」分開處理。
例如:
名稱:The Mom Test
slug:the-mom-test
名稱保留原本書名或正式名稱,訪客看到的文字不需要為了網址而變成「The-Mom-Test」。slug 則統一使用小寫英文、數字與連字號。
這樣做有幾個好處:網址比較容易閱讀、不同系統處理結果較一致,也能降低大小寫、空格與特殊字元造成的路由問題。Google 的網址結構指南也建議用連字號分隔網址中的字詞,並盡量維持清楚、容易理解的 URL。
已經有空格 slug,應該怎麼修?
如果網站已經運作一段時間,不要只把 slug 改掉就結束。比較安全的做法是依序處理:
- 先確認這個 Tag 真的存在。不要因為 404 Log 有一條網址,就直接假設它一定是標籤資料。
- 保留標籤名稱。例如名稱仍然叫「The Mom Test」,只修改 slug。
- 把 slug 改成乾淨格式。例如
the-mom-test。 - 測試新網址。確認
/tag/the-mom-test/能正常回傳 200。 - 舊網址有使用紀錄時補 301。如果舊網址曾公開、被搜尋引擎抓過、出現在文章連結或 404 Logs,就把舊網址導向新的 Tag 網址。
- 檢查站內連結。如果文章正文、選單、頁尾或其他區塊仍直接寫死舊網址,應同步改成新網址。
- 持續觀察 404 Logs。確認新的 Tag 404 沒有繼續產生。
301 的作用不是「把錯誤藏起來」,而是清楚告訴瀏覽器與搜尋引擎:這個舊網址已經永久移到新的位置。如果既有網址必須更動,這也是網址維護時很重要的一步。延伸可以看WordPress 換主機前後的 SEO 檢查,裡面也有整理網址變動與轉址的處理原則。
不要因為 404 很多,就把所有網址全部轉址
404 Logs 常常混著很多不同來源。有些是歷史網址,有些是外掛或主題探測,有些是安全掃描,有些甚至是亂數路徑。
真正適合做 301 的情況,是「舊網址有明確的新對應位置」。例如:
/tag/The%20Mom%20Test/
→ /tag/the-mom-test/
兩邊指的是同一個標籤,只是 slug 格式修正,這種一對一關係很清楚。
反過來說,如果是一個完全不存在的掃描網址,或根本沒有替代內容,就不應為了消除 404 硬導到首頁。錯誤轉址太多,反而會讓網站結構更混亂。
空格之外,大小寫與特殊符號也要一起整理
如果已經要整理 slug,不要只把空格換成連字號就停止。網址規則最好一次統一,尤其是英文 Tag。
例如下面這些原始名稱:
Google Tag Manager
Conway's Law
Marketing 6.0
Release It!
顯示名稱可以完全保留,但 slug 可以整理成:
google-tag-manager
conways-law
marketing-6-0
release-it
這樣做的核心不是追求某一種「唯一正確」拼法,而是避免同一個網站同時出現大寫、小寫、空格、句點、撇號與驚嘆號等不同規則。Google 也提醒網址有大小寫差異時,可能被視為不同網址,因此能統一時,使用一致的小寫格式會比較容易管理。
另外,特殊符號怎麼被清理,最好交給 WordPress 正常的 slug 清理機制,再回讀實際結果,不要只靠人工猜。例如 Conway's Law 最後可能整理成 conways-law;修改後應以 WordPress 實際儲存的 slug 為準,再建立舊網址到新網址的 301。
大量 Tag 要批次修改時,先做這 6 項檢查
如果只改 1 個 Tag,可以逐項人工檢查;如果一次要處理幾十個以上,就要把安全檢查放在前面。否則最怕的不是「少改一個」,而是大量修改後才發現 slug 衝突或文章關聯被破壞。
- 列出所有 slug 含空格的 Tag。先知道範圍,不要邊看 404 邊隨機修改。
- 先算出預計的新 slug。例如空格轉連字號、英文轉小寫,再檢查是否會撞到既有 Tag。
- 修改前記錄文章關聯數量。改 slug 不應改變 Tag 本身,也不應讓原本套用這個 Tag 的文章消失。
- 每一筆都保留舊網址與新網址對照。只有同一個 Tag 的舊、新網址才適合做一對一 301。
- 修改後測試新 Tag 頁回應。至少確認新網址能正常開啟,而不是只看到後台顯示「已更新」。
- 最後再重新掃描。確認整站已沒有 slug 含空格的 Tag,同時持續觀察 404 Logs 是否還冒出同類型問題。
大量修改最適合採取「小批次、每批回讀」的方式。每完成一批就確認 slug、文章數量與轉址結果,再往下一批。速度可能比一次全部改慢一點,但出問題時比較容易定位,也比較不會把錯誤擴大。
設定新標籤時,養成這 5 個習慣
要避免同樣問題再次出現,可以把標籤建立規則簡化成以下 5 點:
- 標籤名稱照正常語言寫,不必為了 URL 犧牲可讀性。
- slug 使用小寫英文。
- 多個單字用連字號
-分隔。 - 避免直接留下空格,也盡量減少不必要的特殊符號。
- 建立後實際開一次前台 Tag 頁,確認網址正常,不要只看後台已儲存。
這個習慣看起來很小,但網站文章累積到幾百篇、上千個 Tag 之後,早期不一致的 slug 很容易變成大量 404、轉址與維護工作。
如果你把網站內容當成長期資產,網址一開始就保持穩定,後面會省很多事情。關於這一點,可以延伸閱讀課程網站可以累積 SEO 嗎?文章為什麼是長期流量資產。
常見問題
WordPress 標籤名稱有空格會造成 404 嗎?
不一定。標籤名稱本身有空格沒有問題,例如「The Mom Test」可以正常顯示。要特別檢查的是 slug 是否真的把空格存進去。正常 WordPress 通常會整理 slug,但舊資料、匯入或外掛建立的 term 仍可能留下異常格式。
網址出現 %20 就代表錯誤嗎?
不是。%20 是空格的百分比編碼,本身不是 HTTP 錯誤。是否會變成 404,要看伺服器與 WordPress 是否能把該網址正確解析到實際內容。
標籤 slug 可以用中文嗎?
可以,WordPress 與現代瀏覽器可以處理中文網址。不過如果網站希望 slug 容易複製、跨系統處理一致,也可以採用簡短英文。重點是建立一致規則,而不是看到中文就一定要修改。
改 Tag slug 之後一定要做 301 嗎?
如果舊網址已經公開使用、被搜尋引擎收錄、被外部網站引用,或在 404 Logs 中持續有人請求,建議做一對一 301。若是尚未公開的新 Tag、舊網址從未使用,就不一定需要額外建立轉址。
標籤很多,要不要一次全部改 slug?
先盤點再改。若確認是一整批相同格式問題,可以批次處理,但應先檢查 slug 衝突、文章與 Tag 關聯、舊網址轉址,以及修改後的新網址是否正常。不要只改資料庫值卻沒有驗證前台。
結論:名稱可以自然寫,slug 要保持乾淨
WordPress 標籤最容易混淆的地方,就是「名稱」和「slug」看起來很像,實際用途卻不同。
名稱是給人看的,所以可以保留:
The Mom Test
slug 是網址的一部分,建議設定成:
the-mom-test
如果網站已經出現 /tag/The%20Mom%20Test/ 這類 404,不要只刪 Log,也不要直接把所有 404 導向首頁。先確認 Tag 是否存在、slug 是否含空格,再修正成乾淨網址,補上必要的 301,最後測試新網址是否正常回傳 200。
這類問題通常不難修,真正麻煩的是拖到標籤累積很多之後才一起整理。從新增標籤的那一刻就把 slug 寫乾淨,會是最省事的做法。
參考資料
WordPress Developer Resources|sanitize_title()|2026年查閱
WordPress Developer Resources|sanitize_title_with_dashes()|2026年查閱
Google Search Central|Google 搜尋的網址結構最佳做法|2026年查閱
