redirect
redirect
函式允許您將使用者重新導向至另一個 URL。redirect
可用於伺服器元件 (Server Components)、客戶端元件 (Client Components)、路由處理程式 (Route Handlers) 和 伺服器動作 (Server Actions)。
在串流上下文 (streaming context) 中使用時,此函式會插入一個 meta 標籤以在客戶端發起重新導向。否則,它會向呼叫者返回 307 HTTP 重新導向回應。
如果資源不存在,您可以使用 notFound
函式 替代。
須知:如果您希望返回 308 (永久) HTTP 重新導向而非 307 (暫時),可以使用
permanentRedirect
函式 替代。
參數
redirect
函式接受兩個參數:
參數 | 類型 | 說明 |
---|---|---|
path | string | 要重新導向的 URL。可以是相對路徑或絕對路徑。 |
type | 'replace' (預設) 或 'push' (在 Server Actions 中預設) | 重新導向的類型。 |
預設情況下,redirect
在伺服器動作 (Server Actions) 中會使用 push
(在瀏覽器歷史堆疊中添加新項目),在其他地方則使用 replace
(替換瀏覽器歷史堆疊中的當前 URL)。您可以通過指定 type
參數來覆蓋此行為。
type
參數在伺服器元件中使用時無效。
返回值
redirect
不返回任何值。
範例
呼叫 redirect()
函式會拋出 NEXT_REDIRECT
錯誤並終止所在路由區段的渲染。
須知:
redirect
不需要您使用return redirect()
,因為它使用了 TypeScript 的never
類型。
版本 | 變更 |
---|---|
v13.0.0 | 引入 redirect 。 |