ملف sitemap.xml
sitemap.(xml|js|ts)
هو ملف خاص يتوافق مع تنسيق Sitemaps XML لمساعدة زواحف محركات البحث على فهرسة موقعك بكفاءة أكبر.
ملفات Sitemap (.xml)
للتطبيقات الصغيرة، يمكنك إنشاء ملف sitemap.xml
ووضعه في جذر دليل app
الخاص بك.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://acme.com</loc>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
<changefreq>yearly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://acme.com/about</loc>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://acme.com/blog</loc>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
إنشاء Sitemap باستخدام الكود (.js, .ts)
يمكنك استخدام اصطلاح ملف sitemap.(js|ts)
لإنشاء Sitemap برمجيًا عن طريق تصدير دالة افتراضية تُرجع مصفوفة من عناوين URL. إذا كنت تستخدم TypeScript، فإن نوع Sitemap
متاح.
import { MetadataRoute } from 'next'
export default function sitemap(): MetadataRoute.Sitemap {
return [
{
url: 'https://acme.com',
lastModified: new Date(),
changeFrequency: 'yearly',
priority: 1,
},
{
url: 'https://acme.com/about',
lastModified: new Date(),
changeFrequency: 'monthly',
priority: 0.8,
},
{
url: 'https://acme.com/blog',
lastModified: new Date(),
changeFrequency: 'weekly',
priority: 0.5,
},
]
}
export default function sitemap() {
return [
{
url: 'https://acme.com',
lastModified: new Date(),
changeFrequency: 'yearly',
priority: 1,
},
{
url: 'https://acme.com/about',
lastModified: new Date(),
changeFrequency: 'monthly',
priority: 0.8,
},
{
url: 'https://acme.com/blog',
lastModified: new Date(),
changeFrequency: 'weekly',
priority: 0.5,
},
]
}
النتيجة:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://acme.com</loc>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
<changefreq>yearly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://acme.com/about</loc>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://acme.com/blog</loc>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
إنشاء Sitemap متعدد اللغات
import { MetadataRoute } from 'next'
export default function sitemap(): MetadataRoute.Sitemap {
return [
{
url: 'https://acme.com',
lastModified: new Date(),
alternates: {
languages: {
es: 'https://acme.com/es',
de: 'https://acme.com/de',
},
},
},
{
url: 'https://acme.com/about',
lastModified: new Date(),
alternates: {
languages: {
es: 'https://acme.com/es/about',
de: 'https://acme.com/de/about',
},
},
},
{
url: 'https://acme.com/blog',
lastModified: new Date(),
alternates: {
languages: {
es: 'https://acme.com/es/blog',
de: 'https://acme.com/de/blog',
},
},
},
]
}
النتيجة:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://acme.com</loc>
<xhtml:link
rel="alternate"
hreflang="es"
href="https://acme.com/es"/>
<xhtml:link
rel="alternate"
hreflang="de"
href="https://acme.com/de"/>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
</url>
<url>
<loc>https://acme.com/about</loc>
<xhtml:link
rel="alternate"
hreflang="es"
href="https://acme.com/es/about"/>
<xhtml:link
rel="alternate"
hreflang="de"
href="https://acme.com/de/about"/>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
</url>
<url>
<loc>https://acme.com/blog</loc>
<xhtml:link
rel="alternate"
hreflang="es"
href="https://acme.com/es/blog"/>
<xhtml:link
rel="alternate"
hreflang="de"
href="https://acme.com/de/blog"/>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
</url>
</urlset>
إنشاء خرائط مواقع متعددة
بينما تعمل خريطة موقع واحدة لمعظم التطبيقات، قد تحتاج لتطبيقات الويب الكبيرة إلى تقسيم خريطة الموقع إلى ملفات متعددة.
هناك طريقتان لإنشاء خرائط مواقع متعددة:
- عن طريق تداخل
sitemap.(xml|js|ts)
داخل أجزاء مسارات متعددة، مثلapp/sitemap.xml
وapp/products/sitemap.xml
. - باستخدام دالة
generateSitemaps
.
على سبيل المثال، لتقسيم خريطة موقع باستخدام generateSitemaps
، قم بإرجاع مصفوفة من الكائنات تحتوي على id
لخريطة الموقع. ثم استخدم id
لإنشاء خرائط مواقع فريدة.
import { BASE_URL } from '@/app/lib/constants'
export async function generateSitemaps() {
// جلب العدد الإجمالي للمنتجات وحساب عدد خرائط المواقع المطلوبة
return [{ id: 0 }, { id: 1 }, { id: 2 }, { id: 3 }]
}
export default async function sitemap({
id,
}: {
id: number
}): Promise<MetadataRoute.Sitemap> {
// الحد الأقصى لـ Google هو 50,000 عنوان URL لكل خريطة موقع
const start = id * 50000
const end = start + 50000
const products = await getProducts(
`SELECT id, date FROM products WHERE id BETWEEN ${start} AND ${end}`
)
return products.map((product) => ({
url: `${BASE_URL}/product/${id}`,
lastModified: product.date,
}))
}
import { BASE_URL } from '@/app/lib/constants'
export async function generateSitemaps() {
// جلب العدد الإجمالي للمنتجات وحساب عدد خرائط المواقع المطلوبة
return [{ id: 0 }, { id: 1 }, { id: 2 }, { id: 3 }]
}
export default async function sitemap({ id }) {
// الحد الأقصى لـ Google هو 50,000 عنوان URL لكل خريطة موقع
const start = id * 50000
const end = start + 50000
const products = await getProducts(
`SELECT id, date FROM products WHERE id BETWEEN ${start} AND ${end}`
)
return products.map((product) => ({
url: `${BASE_URL}/product/${id}`,
lastModified: product.date,
}))
}
في بيئة الإنتاج، ستكون خرائط المواقع التي تم إنشاؤها متاحة على /.../sitemap/[id].xml
. على سبيل المثال، /product/sitemap/1.xml
.
في بيئة التطوير، يمكنك عرض خريطة الموقع التي تم إنشاؤها على /.../sitemap.xml/[id]
. على سبيل المثال، /product/sitemap.xml/1
. هذا الاختلاف مؤقت وسيتبع تنسيق الإنتاج.
راجع مرجع API لـ generateSitemaps
لمزيد من المعلومات.
القيم المُرجعة
يجب أن تُرجع الدالة الافتراضية المصدرة من sitemap.(xml|ts|js)
مصفوفة من الكائنات بالخصائص التالية:
type Sitemap = Array<{
url: string
lastModified?: string | Date
changeFrequency?:
| 'always'
| 'hourly'
| 'daily'
| 'weekly'
| 'monthly'
| 'yearly'
| 'never'
priority?: number
alternates?: {
languages?: Languages<string>
}
}>
سجل الإصدارات
الإصدار | التغييرات |
---|---|
v13.4.5 | إضافة سمات changeFrequency و priority إلى خرائط المواقع. |
v13.3.0 | تقديم sitemap . |