@astrojs/ sitemap
هذا الدمج من أسترو يولد sitemap استنادًا إلى صفحاتك عند إنشاء مشروع أسترو الخاص بك.
لماذا أسترو sitemap
قسم بعنوان لماذا أسترو sitemapيعد SiteMap ملف XML الذي يحدد جميع الصفحات ومقاطع الفيديو والملفات على موقعك .محركات البحث مثل Google تقرأ هذا الملف لتمحيص موقعك بشكل أكثر كفاءة. شاهد نصيحة Google الخاصة ب Sitemap لتعلم المزيد.
يوصى بملف Sitemap للمواقع الكبيرة متعددة الصفحات.إذا لم تستخدم خريطة Sitemap ، فستظل معظم محركات البحث قادرة على إدراج صفحات موقعك ، ولكن خريطة Sitemap هي وسيلة رائعة لضمان أن موقعك صديق لمحركات البحث قدر الإمكان.
باستخدام أسترو Sitemap ، لا داعي للقلق بشأن إنشاء ملف XML هذا بنفسك: سوف يمحص الدمج من أسترو ل Sitemap على طرقك )(routes) المولدة بشكل ثابت وإنشاء ملف Sitemap ، بما في ذلك الطرق الدينامية مثل [...slug]
أو src/pages/[lang]/[version]/info.astro
المولدة عبر ()getStaticPaths
.
هذا الدمج من أسترو لا يمكن أن يولد بيانات Sitemap للطرق الديناميكية SSR mode.
تثبيت
قسم بعنوان تثبيتيتضمن أسترو أمر Astro Add
فيوجد إمكانية .تثبيت عمليات التكامل يدويًا يمكنك ذلك من تنصيب الدمج الرسمي. إذا كنت تفضل غير ذلك
قم بتشغيل أحد الأوامر التالية في نافذة طرفية جديدة.
npx astro add sitemap
pnpm astro add sitemap
yarn astro add sitemap
إذا واجهت أي مشكلات ، لا تتردد في الإبلاغ عنها على Github وجرب خطوات التثبيت اليدوية التالية:
تثبيت يدوي
قسم بعنوان تثبيت يدويأولا ، قم بتثبيت ملف astrojs/sitemap@
الحزمة باستخدام مدير الحزمة الخاص بك.
npm install @astrojs/sitemap
pnpm add @astrojs/sitemap
yarn add @astrojs/sitemap
ثم قم بتطبيق الدمج على *.astro.config
ملف باستخدام :
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ // ... integrations: [sitemap()],});
الاستخدام
قسم بعنوان الاستخدامastrojs/sitemap@
يتطلب رابط الموقع أو الإستضافة لكي يعمل. أضف رابط الموقع لخاصية site
على ملف *.astro.config
. يجب أن يبدأ هذا ب http:
أو https:
.
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ // ... site: 'https://stargazers.club', integrations: [sitemap()],});
لاحظ أنه على عكس خيارات التكوين الأخرى ، site
تم تعيينه في الجذر defineConfig
المركب ، بدلاً من داخل ()sitemap
.
الآن ، إبني موقعك للإنتاج عبر astro build
. ستجد كلاهما sitemap-index.xml
و sitemap-0.xml
في مجلد dist/
(أو مجلد آخر من اختيارك عبر دليل الإخراج إذا تم تعيينه).
إذا نسيت إضافة site
, ستحصل على تحذير ودود عند البناء، و ملف sitemap-index.xml
لن يتم إنشاؤه.
بعد التحقق من بناء خرائط Sitemap ، يمكنك إضافتها إلى موقعك عبر ال <head>
و ملف robots.txt
.
<head> <link rel="sitemap" href="/sitemap-index.xml" /></head>
User-agent: *Allow: /
Sitemap: https://<YOUR SITE>/sitemap-index.xml
لتوليد robots.txt
بشكل ديناميكي ، أضف ملفًا اسمه robots.txt.ts
كالتالي:
import type { APIRoute } from 'astro';
const robotsTxt = `User-agent: *Allow: /
Sitemap: ${new URL('sitemap-index.xml', import.meta.env.SITE).href}`.trim();
export const GET: APIRoute = () => { return new Response(robotsTxt, { headers: { 'Content-Type': 'text/plain; charset=utf-8', }, });};
مثال لملفات تم إنشاؤها لموقع ويب ذو صفحتين
قسم بعنوان مثال لملفات تم إنشاؤها لموقع ويب ذو صفحتين<?xml version="1.0" encoding="UTF-8"?> <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap> <loc>https://stargazers.club/sitemap-0.xml</loc> </sitemap></sitemapindex>
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> <url> <loc>https://stargazers.club/</loc> </url> <url> <loc>https://stargazers.club/second-page/</loc> </url></urlset>
إعدادات
قسم بعنوان إعداداتلتعيين هذا الدمج، قم بتمرير مركب في ()sitemap
عند استدعاء الدالة في astro.config.mjs
.
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ integrations: [ sitemap({ // configuration options }), ],});
انتقاء
قسم بعنوان انتقاءيتم تضمين جميع الصفحات في خريطة sitemap بشكل افتراضي.عن طريق إضافة مخصص filter
الدالة ، يمكنك تصفية الصفحات المضمّنة بواسطة عنوان URL.
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ site: 'https://stargazers.club', integrations: [ sitemap({ filter: (page) => page !== 'https://stargazers.club/secret-vip-lounge/', }), ],});
سيتم استدعاء الوظيفة لكل صفحة على موقعك.ال page
معلمة الوظيفة هي عنوان URL الكامل للصفحة قيد الدراسة حاليًا ، بما في ذلك مجال “الموقع” الخاص بك.إرجاع “صحيح” لتضمين الصفحة في خريطة sitemap الخاصة بك ، و “خطأ” لتركها.
لتصفية صفحات متعددة ، أضف وسائط مع عناوين URL المستهدفة.
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ site: 'https://stargazers.club', integrations: [ sitemap({ filter: (page) => page !== 'https://stargazers.club/secret-vip-lounge-1/' && page !== 'https://stargazers.club/secret-vip-lounge-2/' && page !== 'https://stargazers.club/secret-vip-lounge-3/' && page !== 'https://stargazers.club/secret-vip-lounge-4/', }), ],});
صفحات مخصصة
قسم بعنوان صفحات مخصصةفي بعض الحالات ، قد تكون الصفحة جزءًا من موقعك المنشور ولكن ليس جزءًا من مشروع أسترو الخاص بك.إذا كنت ترغب في تضمين صفحة في sitemap الخاص بك لم يتم إنشاؤها بواسطة أسترو ، فيمكنك استخدام هذا الخيار.
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ site: 'https://stargazers.club', integrations: [ sitemap({ customPages: ['https://stargazers.club/external-page', 'https://stargazers.club/external-page2'], }), ],});
حدود البيانات
قسم بعنوان حدود البياناتالعدد الأقصى للبيانات لكل ملف sitemap.القيمة الافتراضية هي 45000. يتم إنشاء فهرس Sitemap و Sitemap متعددة إذا كان لديك المزيد من البيانات.شاهد شرح تقسيم خريطة Sitemap كبيرة.
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ site: 'https://stargazers.club', integrations: [ sitemap({ entryLimit: 10000, }), ],});
تغيير التردد، آخر تحديث، والأولوية
قسم بعنوان تغيير التردد، آخر تحديث، والأولويةهذه الخيارات تتوافق مع العلامات <changefreq>
، <lastmod>
و <priority>
في خصوصيات sitemap xml.
لاحظ أن changefreq
و priority
يتم تجاهلها من طرف Google.
بسبب قيود أسترو API Integration، لا يمكن لهذا الدمج تحليل رمز مصدر صفحة معينة. يمكن لخيار التغيير هذا تعيين changefreq
وlastmod
وpriority
على أساس مستوى الموقع ؛راجع الخيار التالي التسلسل لكيفية تعيين هذه القيم على أساس صفحة.
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ site: 'https://stargazers.club', integrations: [ sitemap({ changefreq: 'weekly', priority: 0.7, lastmod: new Date('2022-02-24'), }), ],});
التسلسل
قسم بعنوان التسلسلهي دالة يتم استدعاؤها لكل إدخال في خريطة sitemap قبل الكتابة إلى قرص. يمكن أن تكون هذه الوظيفة متزامنة.
يستقبل كمعلمة المركب SitemapItem
الذي يمكن أن تكون له الخصائص التالية:
url
(url الصفحة المطلقة). هذه هي الخاصية الوحيدة المضمونةSitemapItem
في.changefreq
lastmod
(ISO تاريخ التنسيق،String
النوع)priority
links
.
هذه الخاصية links
تحتوي على LinkItem
قائمة الصفحات البديلة بما في ذلك الصفحة الأم.
ال LinkItem
يحتوي على حقلان: url
(العنوان URL المؤهل بالكامل لإصدار هذه الصفحة للغة المحددة) و lang
(رمز اللغة المدعوم الذي يستهدف هذا الإصدار من الصفحة).
الدالة التسلسل
يجب أن ترجع SitemapItem
, غيرت أم لا.
يوضح المثال أدناه القدرة على إضافة خصائص محددة على Sitemap بشكل فردي.
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ site: 'https://stargazers.club', integrations: [ sitemap({ serialize(item) { if (/exclude-from-sitemap/.test(item.url)) { return undefined; } if (/your-special-page/.test(item.url)) { item.changefreq = 'daily'; item.lastmod = new Date(); item.priority = 0.9; } return item; }, }), ],});
عالمية اللغة
قسم بعنوان عالمية اللغةلإنشاء sitemap بلغة محلية ،قم بتمرير مركب إلى خيار i18n
.
هذا المركب له خصائص مطلوبة:
String
:defaultLocale
. يجب أن توجد قيمتها كواحدة من مفاتيحlocales
.Record<String, String>
:locales
, أزواج - key/value . يتم استخدام المفتاح للبحث عن جزء محلي في مسار الصفحة.القيمة هي سمة الغة ، فقط الأبجدية والواصلة الإنجليزية هي المسموح بها.
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ site: 'https://stargazers.club', integrations: [ sitemap({ i18n: { defaultLocale: 'en', // All urls that don't contain `es` or `fr` after `https://stargazers.club/` will be treated as default locale, i.e. `en` locales: { en: 'en-US', // The `defaultLocale` value must present in `locales` keys es: 'es-ES', fr: 'fr-CA', }, }, }), ],});
ال sitemap الناتج يبدو مثل هذا:
... <url> <loc>https://stargazers.club/</loc> <xhtml:link rel="alternate" hreflang="en-US" href="https://stargazers.club/"/> <xhtml:link rel="alternate" hreflang="es-ES" href="https://stargazers.club/es/"/> <xhtml:link rel="alternate" hreflang="fr-CA" href="https://stargazers.club/fr/"/> </url> <url> <loc>https://stargazers.club/es/</loc> <xhtml:link rel="alternate" hreflang="en-US" href="https://stargazers.club/"/> <xhtml:link rel="alternate" hreflang="es-ES" href="https://stargazers.club/es/"/> <xhtml:link rel="alternate" hreflang="fr-CA" href="https://stargazers.club/fr/"/> </url> <url> <loc>https://stargazers.club/fr/</loc> <xhtml:link rel="alternate" hreflang="en-US" href="https://stargazers.club/"/> <xhtml:link rel="alternate" hreflang="es-ES" href="https://stargazers.club/es/"/> <xhtml:link rel="alternate" hreflang="fr-CA" href="https://stargazers.club/fr/"/> </url> <url> <loc>https://stargazers.club/es/second-page/</loc> <xhtml:link rel="alternate" hreflang="es-ES" href="https://stargazers.club/es/second-page/"/> <xhtml:link rel="alternate" hreflang="fr-CA" href="https://stargazers.club/fr/second-page/"/> <xhtml:link rel="alternate" hreflang="en-US" href="https://stargazers.club/second-page/"/> </url>...
أمثلة
قسم بعنوان أمثلة- يستخدم موقع أسترو الرسمي Astro Sitemap لإنشاء خريطة sitemap.
- تصفح المشاريع التي تستخدم Astro sitemap على github لمزيد من الأمثلة!