Meta 描述: 深入了解 URL Rewrite 技術原理與實際應用,探討 URL 結構對 SEO 的影響,提供 SEO 友善網址的最佳實踐建議與實作範例。
目錄
- 什麼是 URL Rewrite?
- URL Rewrite 的主要功用
- URL Rewrite 對 SEO 有幫助嗎?
- 什麼樣的網址才適合 SEO?
- URL Rewrite 實作範例
- 常見錯誤與注意事項
- 結論
什麼是 URL Rewrite?
URL Rewrite(網址重寫) 是一種伺服器端技術,用於在網頁伺服器接收到請求時,將用戶看到的 URL 轉換成伺服器內部實際處理的路徑。這個轉換過程對用戶和搜尋引擎是完全透明的。
基本運作原理
| 階段 | 說明 |
|---|---|
| 用戶請求 | 用戶在瀏覽器輸入「美化後」的 URL |
| 伺服器攔截 | Web 伺服器(如 nginx、Apache)攔截請求 |
| 內部轉換 | 根據規則將 URL 轉換成實際的檔案路徑或腳本參數 |
| 處理回應 | 伺服器處理請求並返回內容,用戶看到的仍是美化後的 URL |
實際例子對比
重寫前(傳統動態 URL):
https://example.com/product.php?id=123&category=electronics
https://example.com/article.php?slug=seo-guide&lang=zh-TW
重寫後(SEO 友善 URL):
https://example.com/products/electronics/123
https://example.com/articles/seo-guide
URL Rewrite 的主要功用
1. 美化網址,提升用戶體驗
乾淨、簡潔的 URL 更容易被用戶閱讀、記憶和分享。想像一下,您比較願意點擊哪個連結?
- ❌
https://site.com/view.php?id=4829&cat=2&sort=desc - ✅
https://site.com/blog/2026/seo-best-practices
2. 隱藏技術細節,增強安全性
URL Rewrite 可以隱藏後端使用的技術棧、檔案結構和資料庫查詢參數,降低被攻擊的風險:
- 不暴露程式語言副檔名(
.php、.asp、.jsp) - 不暴露伺服器目錄結構
- 不暴露資料庫 ID 和查詢參數
3. 維持舊連結,無痛遷移網站
當網站重構或更換 CMS 時,URL 結構往往會改變。通過 URL Rewrite,可以將舊 URL 映射到新結構,避免產生大量 404 錯誤:
# 將舊網址重定向到新網址
rewrite ^/old-blog/(.*)$ /articles/$1 permanent;
4. 統一網址格式,避免內容重複
同一內容可能有多個訪問路徑,導致搜尋引擎視為重複內容。URL Rewrite 可以統一規範:
# 強制使用 www 版本
rewrite ^https?://example.com/(.*)$ https://www.example.com/$1 permanent;
# 強制使用 HTTPS
rewrite ^http://(.*)$ https://$1 permanent;
5. 支援多語言和地區化
通過 URL 結構區分不同語言版本,有助於國際化 SEO:
https://example.com/tw/products
https://example.com/us/products
https://example.com/jp/products
URL Rewrite 對 SEO 有幫助嗎?
官方立場
Google 官方明確表示:URL 結構是搜尋引擎排名因素之一,但影響程度相對較小。Google 搜尋倡導者 John Mueller 曾多次提到:
「清晰的 URL 結構主要幫助用戶,而非直接提升排名。但用戶體驗間接影響 SEO。」
對 SEO 的實際影響
| 影響層面 | 影響程度 | 說明 |
|---|---|---|
| 搜尋引擎爬取 | 中等 | 清晰的 URL 結構有助於爬蟲理解網站架構 |
| 關鍵字信號 | 輕微 | URL 中的關鍵字可作為排名信號,但權重不高 |
| 點擊率(CTR) | 高 | 清晰的 URL 在搜尋結果中更吸引用戶點擊 |
| 連結分享 | 中等 | 易讀的 URL 更容易被分享和引用 |
| 用戶信任度 | 中等 | 乾淨的 URL 看起來更專業、可信 |
間接 SEO 好處
雖然 URL Rewrite 本身不是強排名因素,但帶來的間接好處不容忽視:
- 更高的點擊率 → 搜尋引擎認為內容更相關 → 間接提升排名
- 更好的用戶體驗 → 降低跳出率 → 間接提升排名
- 更容易分享 → 更多自然連結 → 直接提升排名
什麼樣的網址才適合 SEO?
SEO 友善 URL 的最佳實踐
✅ 應該做的
- 使用小寫字母:避免大小寫混淆,
/Blog/SEO和/blog/seo可能被視為不同頁面 - 使用連字號分隔單字:使用
-而非_或空格,Google 將連字號視為空格 - 包含目標關鍵字:在 URL 中自然融入主要關鍵字,但避免過度優化
- 保持簡潔:理想長度為 50-60 字元,最長不超過 2048 字元
- 使用靜態結構:避免過多的參數和動態查詢字串
- 反映網站架構:URL 應體現內容的分類層級
- 使用 HTTPS:HTTPS 是 Google 的排名信號之一
❌ 應該避免的
- 避免過長的 URL:超過 100 字元的 URL 在搜尋結果中會被截斷
- 避免過多目錄層級:建議不超過 3-5 層,如
/a/b/c/d/e/f - 避免特殊字元:不要使用
!,@,#,$,%等符號 - 避免關鍵字堆砌:
/seo/seo-guide/seo-tips/seo-best會被視為垃圾內容 - 避免無意義的數字:
/product/12345不如/product/iphone-15 - 避免日期(除非是新聞): evergreen 內容不建議在 URL 中包含日期
實際案例對比
| 類型 | 不建議 ❌ | 建議 ✅ |
|---|---|---|
| 產品頁面 | /product.php?id=8472 |
/products/apple-iphone-15-pro |
| 文章頁面 | /article.php?cat=5&pid=123 |
/blog/seo-url-rewrite-guide |
| 分類頁面 | /category.php?id=electronics |
/categories/electronics |
| 使用者頁面 | /user.php?uid=4829 |
/users/john-doe |
| 帶參數的搜尋 | /search.php?q=seo&sort=desc |
/search/seo(或使用 canonical) |
URL Rewrite 實作範例
nginx 配置範例
# 基本 Rewrite 規則
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 產品頁面重寫
rewrite ^/products/([a-zA-Z0-9-]+)/([0-9]+)$ /product.php?slug=$1&id=$2 last;
# 文章頁面重寫
rewrite ^/blog/([a-zA-Z0-9-]+)$ /article.php?slug=$1 last;
# 分類頁面重寫
rewrite ^/categories/([a-zA-Z0-9-]+)$ /category.php?slug=$1 last;
# 強制 HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
# 強制使用 www(或不使用 www)
server {
listen 443 ssl;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
Apache .htaccess 範例
RewriteEngine On
# 強制 HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 產品頁面重寫
RewriteRule ^products/([a-zA-Z0-9-]+)/([0-9]+)$ /product.php?slug=$1&id=$2 [L,QSA]
# 文章頁面重寫
RewriteRule ^blog/([a-zA-Z0-9-]+)$ /article.php?slug=$1 [L,QSA]
# 分類頁面重寫
RewriteRule ^categories/([a-zA-Z0-9-]+)$ /category.php?slug=$1 [L,QSA]
# 移除 .php 副檔名
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
Nuxt 3 範例(現代前端框架)
// nuxt.config.ts
export default defineNuxtConfig({
nitro: {
routes: {
"/products/:slug": {
redirect: "/product/[slug]"
}
}
}
})
// pages/products/[slug].vue
<template>
<div>
<h1>{{ product.name }}</h1>
</div>
</template>
<script setup>
const route = useRoute()
const { data: product } = await useFetch(`/api/products/${route.params.slug}`)
</script>
常見錯誤與注意事項
1. 避免重寫迴圈
錯誤配置可能導致無限重寫迴圈,使伺服器崩潰:
# ❌ 錯誤:可能導致迴圈
rewrite ^/blog/(.*)$ /blog/$1 last;
# ✅ 正確:添加條件檢查
rewrite ^/blog/(.+)$ /index.php?slug=$1 last;
2. 正確使用 301 與 302 重定向
| 類型 | 用途 | SEO 影響 |
|---|---|---|
| 301(永久) | 網址永久變更,舊 URL 不再使用 | 傳遞 90-99% 的連結權重 |
| 302(暫時) | 網址暫時變更,將來可能恢復 | 不傳遞連結權重 |
3. 設定 Canonical URL
當同一內容有多個 URL 時,使用 canonical 標籤告訴搜尋引擎哪個是主要版本:
<link rel="canonical" href="https://example.com/blog/seo-guide" />
4. 更新 Sitemap
更改 URL 結構後,務必更新 XML Sitemap 並重新提交到 Google Search Console。
5. 設定 301 重定向
舊 URL 應設定 301 重定向到新 URL,避免 404 錯誤和權重流失。
6. 測試重寫規則
使用工具測試 Rewrite 規則是否正確運作:
# 測試 nginx 配置
nginx -t
# 使用 curl 測試重定向
curl -I https://example.com/old-url
結論
URL Rewrite 是一項強大的技術,雖然對 SEO 的直接影響有限,但帶來的用戶體驗提升和間接 SEO 好處不容忽視。
重點整理
- URL Rewrite 主要價值:美化網址、隱藏技術細節、維持舊連結、統一 URL 格式
- SEO 影響:直接影響輕微,但通過提升 CTR 和用戶體驗間接幫助排名
- SEO 友善 URL 特徵:簡潔、小寫、連字號分隔、包含關鍵字、反映網站架構
- 實作注意:避免重寫迴圈、正確使用 301 重定向、設定 canonical、更新 sitemap
最終建議
如果您正在規劃新網站,從一開始就採用 SEO 友善的 URL 結構是最理想的。如果已有舊網站,建議:
- 評估現有 URL 結構的問題
- 規劃新的 URL 規範
- 實作 URL Rewrite 規則
- 設定 301 重定向(舊→新)
- 更新 sitemap 並提交到搜尋引擎
- 監控 404 錯誤和搜尋排名變化
記住:URL 結構是用戶體驗的一部分,而不僅僅是 SEO 技巧。 為用戶設計,搜尋引擎自然會喜歡。
參考來源:
- Google Search Central - URL Structure Best Practices
- Moz - SEO-Friendly URL Structures
- Ahrefs - URL Structure for SEO
- nginx Documentation - Rewrite Module
- Apache Documentation - mod_rewrite
作者: LinkPortal 編輯團隊
分類: 網站優化
更新日期: 2026-06-12