permanentRedirect
تتيح لك وظيفة permanentRedirect
إعادة توجيه المستخدم إلى عنوان URL آخر. يمكن استخدام permanentRedirect
في مكونات الخادم (Server Components)، ومكونات العميل (Client Components)، وحدات معالجة المسارات (Route Handlers)، و أفعال الخادم (Server Actions).
عند استخدامها في سياق البث (streaming)، ستقوم بإدراج وسم meta لإصدار إعادة التوجيه على جانب العميل. عند استخدامها في فعل خادم (server action)، ستقدم استجابة إعادة توجيه HTTP 303 إلى المتصل. وإلا، ستقدم استجابة إعادة توجيه HTTP 308 (دائمة) إلى المتصل.
إذا لم يكن المورد موجودًا، يمكنك استخدام وظيفة notFound
بدلاً من ذلك.
معلومة مفيدة: إذا كنت تفضل إرجاع إعادة توجيه HTTP 307 (مؤقتة) بدلاً من 308 (دائمة)، يمكنك استخدام وظيفة
redirect
بدلاً من ذلك.
المعاملات (Parameters)
تقبل وظيفة permanentRedirect
وسيطين:
permanentRedirect(path, type)
المعامل | النوع | الوصف |
---|---|---|
path | string | عنوان URL لإعادة التوجيه إليه. يمكن أن يكون مسارًا نسبيًا أو مطلقًا. |
type | 'replace' (افتراضي) أو 'push' (افتراضي في Server Actions) | نوع إعادة التوجيه المطلوب تنفيذه. |
بشكل افتراضي، ستستخدم permanentRedirect
push
(إضافة إدخال جديد إلى سجل المتصفح) في أفعال الخادم (Server Actions) و replace
(استبدال عنوان URL الحالي في سجل المتصفح) في كل مكان آخر. يمكنك تجاوز هذا السلوك عن طريق تحديد معامل type
.
ليس لمعامل type
أي تأثير عند استخدامه في مكونات الخادم (Server Components).
القيمة المرجعة (Returns)
لا ترجع permanentRedirect
أي قيمة.
مثال
استدعاء وظيفة permanentRedirect()
يرمي خطأ NEXT_REDIRECT
ويوقف عرض جزء المسار الذي تم رميه فيه.
import { permanentRedirect } 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 { id } = await params
const team = await fetchTeam(id)
if (!team) {
permanentRedirect('/login')
}
// ...
}
معلومة مفيدة: لا تتطلب
permanentRedirect
منك استخدامreturn permanentRedirect()
لأنها تستخدم نوع TypeScriptnever
.