permanentRedirect
تتيح لك وظيفة permanentRedirect
توجيه المستخدم إلى عنوان URL آخر. يمكن استخدام permanentRedirect
في مكونات الخادم، ومكونات العميل، وحدات معالجة المسارات، وإجراءات الخادم.
عند استخدامها في سياق بث، سيتم إدراج وسم meta لإصدار التوجيه على جانب العميل. وإلا، سيتم تقديم استجابة توجيه HTTP 308 (دائم) للمتصل.
إذا لم يكن المورد موجودًا، يمكنك استخدام وظيفة notFound
بدلاً من ذلك.
معلومة مفيدة: إذا كنت تفضل إرجاع توجيه HTTP 307 (مؤقت) بدلاً من 308 (دائم)، يمكنك استخدام وظيفة
redirect
بدلاً من ذلك.
المعاملات
تقبل وظيفة permanentRedirect
وسيطين:
permanentRedirect(path, type)
المعامل | النوع | الوصف |
---|---|---|
path | string | عنوان URL للتوجيه إليه. يمكن أن يكون مسارًا نسبيًا أو مطلقًا. |
type | 'replace' (افتراضي) أو 'push' (افتراضي في إجراءات الخادم) | نوع التوجيه المطلوب تنفيذه. |
بشكل افتراضي، سيستخدم permanentRedirect
push
(إضافة إدخال جديد إلى سجل المتصفح) في إجراءات الخادم و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
.