تخطَّ إلى المحتوى

@astrojs/ 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 فيوجد إمكانية .تثبيت عمليات التكامل يدويًا يمكنك ذلك من تنصيب الدمج الرسمي. إذا كنت تفضل غير ذلك

قم بتشغيل أحد الأوامر التالية في نافذة طرفية جديدة.

Terminal window
npx astro add sitemap

إذا واجهت أي مشكلات ، لا تتردد في الإبلاغ عنها على Github وجرب خطوات التثبيت اليدوية التالية:

أولا ، قم بتثبيت ملف astrojs/sitemap@ الحزمة باستخدام مدير الحزمة الخاص بك.

Terminal window
npm install @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:.

astro.config.mjs
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/ (أو مجلد آخر من اختيارك عبر دليل الإخراج إذا تم تعيينه).

بعد التحقق من بناء خرائط Sitemap ، يمكنك إضافتها إلى موقعك عبر ال <head> و ملف robots.txt.

src/layouts/Layout.astro
<head>
<link rel="sitemap" href="/sitemap-index.xml" />
</head>
public/robots.txt
User-agent: *
Allow: /
Sitemap: https://<YOUR SITE>/sitemap-index.xml

لتوليد robots.txt بشكل ديناميكي ، أضف ملفًا اسمه robots.txt.ts كالتالي:

src/pages/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',
},
});
};

مثال لملفات تم إنشاؤها لموقع ويب ذو صفحتين

قسم بعنوان مثال لملفات تم إنشاؤها لموقع ويب ذو صفحتين
sitemap-index.xml
<?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>
sitemap-0.xml
<?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.

astro.config.mjs
import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';
export default defineConfig({
integrations: [
sitemap({
// configuration options
}),
],
});

يتم تضمين جميع الصفحات في خريطة sitemap بشكل افتراضي.عن طريق إضافة مخصص filter الدالة ، يمكنك تصفية الصفحات المضمّنة بواسطة عنوان URL.

astro.config.mjs
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 المستهدفة.

astro.config.mjs
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 الخاص بك لم يتم إنشاؤها بواسطة أسترو ، فيمكنك استخدام هذا الخيار.

astro.config.mjs
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 كبيرة.

astro.config.mjs
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.

astro.config.mjs
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 بشكل فردي.

astro.config.mjs
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 . يتم استخدام المفتاح للبحث عن جزء محلي في مسار الصفحة.القيمة هي سمة الغة ، فقط الأبجدية والواصلة الإنجليزية هي المسموح بها.

اقرأ المزيد عن سمات اللغة.

اقرأ المزيد عن محلية اللغة.

astro.config.mjs
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 الناتج يبدو مثل هذا:

sitemap-0.xml
...
<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>
...

إدماجات أخرى

أطر عمل الواجهات

محولات تصيير على الخادم SSR

أخرى