許多網站在建置初期使用傳統的動態網址(如 article.php?id=123&cat=5),隨著網站成長,開始意識到 SEO 友善網址的重要性。但將既有網站從無 URL Rewrite 改為有 URL Rewrite,涉及層面遠比想像中複雜——網址規則、程式架構、轉址設定、SEO 影響,每一環節都不容疏忽。本文逐步列出各項細節與建議作法。
目錄
一、網址規則制定
改用 URL Rewrite 的第一步,是制定一套合理且可持續維護的網址規則。
規則制定原則:
- 簡潔有意義:網址應讓使用者和搜尋引擎都能理解內容,如
/articles/seo-guide而非/articles/123 - 層級不超過 3~4 層:過深的網址層級不利於搜尋引擎爬取,如
/blog/2026/seo/url-rewrite-guide已是上限 - 使用連字號(-)分隔單字:搜尋引擎將連字號視為單字分隔,底線(_)則不被識別
- 全部小寫:避免大小寫混用導致重複內容問題(
/Article/SEO和/article/seo可能被視為不同頁面) - 不包含查詢參數:將
?id=123改為/articles/seo-guide,用 slug 而非 ID - 結尾不加 .html/.php:隱藏副檔名讓網址更乾淨,未來更換技術棧也不需改網址
規則範例:
| 頁面類型 | 舊網址 | 新網址 |
|---|---|---|
| 文章列表 | articles.php | /articles |
| 文章詳情 | article.php?id=123 | /articles/seo-guide |
| 分類頁 | category.php?cat=5 | /articles/seo |
| 產品頁 | product.php?id=456 | /products/web-hosting |
| 首頁 | index.php | / |
注意事項:
- 新規則一旦上線就不宜頻繁變動,制定時要考慮未來擴充性
- 如果網站有多語言版本,需規劃語言前綴(如
/zh-tw/articles/...、/en/articles/...) - 與團隊討論確認規則後再進行後續修改,避免上線後又推翻重來
二、程式架構修改
URL Rewrite 不只是伺服器設定,程式端也需要配合調整。
後端程式修改
- 路由系統調整:如果使用框架(如 Laravel、Django、ASP.NET MVC),框架本身已內建路由系統,只需註冊新路由規則。如果是傳統 PHP/ASP 程式,則需要自行解析 URL 參數。
- 從查詢參數改為 Slug 查詢:原本用
$_GET['id']查資料庫,改為用 slug 查詢(如WHERE slug = 'seo-guide')。需確保每篇文章有唯一的 slug 欄位,並在資料庫加上索引。 - Slug 生成機制:為既有文章自動生成 slug,可從標題轉換(移除特殊字元、空格轉連字號、轉小寫)。需處理重複 slug 的情況。
前端程式修改
- 內部連結更新:所有網站內部的
<a href="article.php?id=123">都要改為<a href="/articles/seo-guide">。這是工作量最大的部分,建議用全站搜尋替換的方式處理。 - sitemap.xml 更新:XML Sitemap 中的所有網址都要更新為新格式。
- Canonical 標籤更新:每個頁面的
<link rel="canonical">要指向新網址。 - 結構化資料(Schema.org)更新:JSON-LD 中的 URL 欄位也要改為新網址。
- Open Graph / Twitter Card 更新:社群分享的 meta 標籤中的 URL 也要同步更新。
資料庫修改
- 新增
slug欄位(VARCHAR,加 UNIQUE INDEX) - 為既有資料大量生成 slug
- 確保新增文章時自動生成 slug
三、網址轉換與 301 轉址設定
這是最關鍵的步驟——確保舊網址能自動轉址到新網址,避免 404 錯誤。
301 永久轉址的重要性
- 301 轉址告訴搜尋引擎「這個頁面已永久搬到新位置」,會將舊網址的 SEO 權重(排名訊號)傳遞到新網址
- 不設定 301 轉址的話,搜尋引擎會將舊網址視為 404(不存在),排名和流量將直接消失
- 使用者也會因為書籤或外部連結連到舊網址而看到 404 頁面
Nginx 設定範例
# 單頁轉址:舊網址 → 新網址
location = /article.php {
if ($args ~* "id=123") {
return 301 /articles/seo-guide;
}
}
大量轉址:依規則轉換
/article.php?id=123 → /articles/{slug}
需搭配程式端處理,查資料庫取得對應 slug
location ~ ^/article.php$ {
# 透過 internal rewrite 交給程式查 slug 後轉址
rewrite ^ /redirect-handler.php last;
}
強制 HTTPS 和移除 www
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
Apache .htaccess 設定範例
# 啟用 Rewrite Engine
RewriteEngine On
單頁轉址
RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^article.php$ /articles/seo-guide? [R=301,L]
大量轉址(需搭配程式處理)
RewriteRule ^article.php$ /redirect-handler.php [L]
轉址策略建議
- 少量頁面(<50 頁):可手動逐一設定 301 轉址規則
- 大量頁面(>50 頁):寫一個轉址處理程式,接收舊網址參數,查資料庫取得對應 slug,再 301 轉址到新網址
- 轉址鏈避免超過 1 跳:不要 A → B → C,應該直接 A → C
- 舊網址至少保留 6 個月:搜尋引擎需要時間收錄新網址,不要太早移除轉址規則
四、對既有 SEO 的影響與保護策略
改網址結構對 SEO 有重大影響,需要謹慎評估和準備。
短期影響
- 排名波動:即使設定 301 轉址,搜尋引擎在重新收錄期間(通常 2~8 週)排名可能出現暫時性下降
- 流量下降:過渡期間,部分頁面可能因為轉址延遲或索引未更新而流失流量
- Search Console 警告:Google Search Console 會顯示大量 301 轉址和索引變更,屬正常現象
長期影響(正面)
- 排名提升:SEO 友善網址有助於搜尋引擎理解頁面內容,長期排名會優於動態網址
- 點擊率提升:搜尋結果中乾淨的網址更容易被使用者點擊
- 收錄效率提升:結構化的網址更容易被搜尋引擎爬蟲發現和收錄
保護策略
1. 遷移前準備
- 完整記錄所有舊網址與對應新網址的對應表(URL Mapping)
- 在 Google Search Console 提交現有的 sitemap.xml,記錄當前索引狀態
- 確認所有舊網址都有對應的 301 轉址目標
2. 遷移時執行
- 選擇低流量時段切換(深夜或週末)
- 上線後立即檢查 301 轉址是否正常運作
- 提交新的 sitemap.xml 到 Google Search Console
- 使用 Search Console 的「網址檢查」工具逐一驗證重要頁面
3. 遷移後監控
- 每週檢查 Search Console 的索引狀態和排名變化
- 監控 404 錯誤報告,找出未設定轉址的漏網之魚
- 觀察搜尋流量變化趨勢,通常 4~8 週後恢復
- 如果 8 週後排名仍未恢復,需檢查轉址是否正確或是否有其他技術問題
常見錯誤與避免方式
| 錯誤 | 影響 | 避免方式 |
|---|---|---|
| 未設定 301 轉址 | 舊網址 404,SEO 權重歸零 | 上線前逐一測試所有轉址規則 |
| 使用 302 而非 301 | SEO 權重不會轉移 | 確認轉址使用 301 狀態碼 |
| 轉址鏈過長 | 爬蟲放棄跟隨,權重流失 | 直接轉到最終目標網址 |
| 忘記更新 sitemap | 搜尋引擎不知有新網址 | 同時更新 XML Sitemap 並提交 |
| 內部連結未更新 | 產生大量內部 301 連結 | 全站搜尋替換所有內部連結 |
| Canonical 指向舊網址 | 搜尋引擎困惑 | 確認 canonical 指向新網址 |
五、實施時間表建議
完整的遷移建議分階段執行,避免一次改動太多造成混亂:
第 1 週:規劃與準備
- 制定網址規則
- 建立舊網址與新網址的對應表
- 在測試環境驗證新網址和轉址規則
第 2 週:程式修改
- 後端路由系統調整
- 資料庫新增 slug 欄位
- 前端連結更新
- Sitemap、canonical、結構化資料更新
第 3 週:測試與驗證
- 在測試環境完整測試所有頁面的新網址
- 測試所有 301 轉址規則
- 確認無 404 錯誤
第 4 週:正式上線與監控
- 選擇低流量時段切換
- 提交新 sitemap 到 Search Console
- 開始持續監控排名和流量
六、總結
將既有網站改用 URL Rewrite 是一項值得投資的工程,但必須有周全的計劃。最關鍵的原則是:不要讓任何一個舊網址變成 404。每一個舊網址都必須有對應的 301 永久轉址指向新網址,確保 SEO 權重完整轉移。短期可能會有排名波動,但長期來看,SEO 友善網址將帶來更好的搜尋能見度和使用者體驗。
📖 延伸閱讀:想了解更多 URL Rewrite 的基礎概念與 SEO 最佳實踐,請參閱我們的另一篇文章:什麼是 URL Rewrite?有什麼功用,對 SEO 有幫助嗎?什麼樣的網址才適合 SEO