permanentRedirect

تتيح لك وظيفة permanentRedirect توجيه المستخدم إلى عنوان URL آخر. يمكن استخدام permanentRedirect في مكونات الخادم، ومكونات العميل، وحدات معالجة المسارات، وإجراءات الخادم.

عند استخدامها في سياق بث، سيتم إدراج وسم meta لإصدار التوجيه على جانب العميل. وإلا، سيتم تقديم استجابة توجيه HTTP 308 (دائم) للمتصل.

إذا لم يكن المورد موجودًا، يمكنك استخدام وظيفة notFound بدلاً من ذلك.

معلومة مفيدة: إذا كنت تفضل إرجاع توجيه HTTP 307 (مؤقت) بدلاً من 308 (دائم)، يمكنك استخدام وظيفة redirect بدلاً من ذلك.

المعاملات

تقبل وظيفة permanentRedirect وسيطين:

permanentRedirect(path, type)
المعاملالنوعالوصف
pathstringعنوان URL للتوجيه إليه. يمكن أن يكون مسارًا نسبيًا أو مطلقًا.
type'replace' (افتراضي) أو 'push' (افتراضي في إجراءات الخادم)نوع التوجيه المطلوب تنفيذه.

بشكل افتراضي، سيستخدم permanentRedirect push (إضافة إدخال جديد إلى سجل المتصفح) في إجراءات الخادم وreplace (استبدال عنوان URL الحالي في سجل المتصفح) في جميع الأماكن الأخرى. يمكنك تجاوز هذا السلوك عن طريق تحديد معامل type.

لا يؤثر معامل type عند استخدامه في مكونات الخادم.

القيم المرجعة

لا ترجع permanentRedirect أي قيمة.

مثال

استدعاء وظيفة permanentRedirect() يرمي خطأ NEXT_REDIRECT ويوقف عرض مقطع المسار الذي تم رميه فيه.

app/team/[id]/page.js
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() لأنه يستخدم نوع TypeScript never.