Next.js 重寫和重定向:深度解析
什么是重寫和重定向?
重定向:重定向是一種服務器端指令,告訴瀏覽器從一個 URL 導航到另一個 URL。這通常會導致用戶瀏覽器中的 URL 發生變化,并且瀏覽器會向目標 URL 發出新的請求。重定向通常用于 URL 重構、內容移動或確保 SEO 友好的 URL。
重寫:重寫是一種服務器端操作,它將傳入的請求路徑映射到不同的目標路徑,同時不改變瀏覽器中的 URL。重寫適用于在同一 URL 下提供不同內容、隱藏文件路徑的復雜性,或將傳統系統集成到現代架構中。
在 Next.js 中實現重定向
在 Next.js 中,配置重定向非常簡單。你可以在 next.config.js 文件中定義重定向。典型的配置如下:
module.exports = {
async redirects() {
return [
{
source: '/old-path',
destination: '/new-path',
permanent: true, // 指示重定向是永久的(301)還是臨時的(302)
},
{
source: '/blog/:slug',
destination: '/news/:slug',
permanent: false,
},
];
},
};
- 從 /old-path 到 /new-path 的永久重定向。永久重定向(HTTP 狀態碼 301)向搜索引擎表明舊 URL 已被新 URL 替換,有助于保持 SEO 排名。
- 從 /blog/:slug 到 /news/:slug 的臨時重定向。臨時重定向(HTTP 狀態碼 302)用于移動不是永久的情況,搜索引擎應繼續索引舊 URL。
在 Next.js 中實現重寫重寫也在 next.config.js 文件中定義。
module.exports = {
async rewrites() {
return [
{
source: '/about-us',
destination: '/company/about',
},
{
source: '/product/:id',
destination: '/api/product-details?id=:id',
},
];
},
};
- 第一個重寫將 /about-us 路徑映射到 /company/about,同時不改變用戶瀏覽器中的 URL。這使你可以保持用戶友好的 URL,同時以適合應用程序架構的方式組織內容。
- 第二個重寫將來自 /product/:id 的請求路由到 API 端點 /api/product-details,并帶有 id 參數。當將 Next.js 與后端服務或外部 API 集成時,這特別有用。
何時使用重定向與重寫
選擇重定向還是重寫取決于你的具體用例:
- 使用重定向:當你需要更改用戶瀏覽器中的 URL,尤其是在重構網站內容或改進 SEO 時。當你希望告知搜索引擎頁面已永久移動時,重定向也至關重要。
- 使用重寫:當你想在特定 URL 下提供內容而不暴露底層結構,或者需要在保持一致的 URL 模式的同時與外部服務集成時。