إعادة التوجيه (redirect)
تتيح لك وظيفة redirect
توجيه المستخدم إلى عنوان URL آخر. يمكن استخدام redirect
في مكونات الخادم (Server Components)، ومكونات العميل (Client Components)، ومعالجات المسارات (Route Handlers)، ووأفعال الخادم (Server Actions).
عند استخدامها في سياق البث (streaming context)، سيقوم هذا بإدراج وسم meta لتنفيذ إعادة التوجيه على جانب العميل. وإلا، سيقوم بإرسال استجابة إعادة توجيه HTTP 307 إلى المتصل.
إذا لم يكن المورد موجودًا، يمكنك استخدام وظيفة notFound
بدلاً من ذلك.
معلومة مفيدة: إذا كنت تفضل إرجاع إعادة توجيه HTTP 308 (دائم) بدلاً من 307 (مؤقت)، يمكنك استخدام وظيفة
permanentRedirect
بدلاً من ذلك.
المعاملات (Parameters)
تقبل وظيفة redirect
وسيطين:
redirect(path, type)
المعامل | النوع | الوصف |
---|---|---|
path | string | عنوان URL لإعادة التوجيه إليه. يمكن أن يكون مسارًا نسبيًا أو مطلقًا. |
type | 'replace' (افتراضي) أو 'push' (افتراضي في Server Actions) | نوع إعادة التوجيه المطلوب تنفيذه. |
بشكل افتراضي، سيستخدم redirect
push
(إضافة إدخال جديد إلى سجل المتصفح) في أفعال الخادم (Server Actions) وreplace
(استبدال عنوان URL الحالي في سجل المتصفح) في جميع الأماكن الأخرى. يمكنك تجاوز هذا السلوك عن طريق تحديد معامل type
.
لا يؤثر معامل type
عند استخدامه في مكونات الخادم (Server Components).
القيم المرجعة (Returns)
لا ترجع وظيفة redirect
أي قيمة.
مثال
استدعاء وظيفة redirect()
يثير خطأ NEXT_REDIRECT
ويوقف عرض مقطع المسار الذي تم إثارته فيه.
import { redirect } from 'next/navigation'
async function fetchTeam(id) {
const res = await fetch('https://...')
if (!res.ok) return undefined
return res.json()
}
export default async function Profile({ params }) {
const team = await fetchTeam(params.id)
if (!team) {
redirect('/login')
}
// ...
}
معلومة مفيدة: لا يتطلب
redirect
استخدامreturn redirect()
حيث يستخدم نوع TypeScriptnever
.
الإصدار | التغييرات |
---|---|
v13.0.0 | تم إدخال redirect . |