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