نظرًا للمكتبات الناشئة الجديدة التي تقوم بنفس الوظيفة ، يتم تمييز هذه المكتبة على أنها تم إهمالها وتفكر في استخدام مكتبة Sitemap Next.
نحن نبحث عن المشرفين لأنه ليس لدي ما يكفي من الوقت للحفاظ على الحزمة.
يرجى النظر في التبرع لصيانة المشروع.
يتبرع
بسيطة sitemap.xml mapper لمشاريع next.js.
لتثبيت الحزمة ، قم بتنفيذ هذا في محطةك إذا كنت تستخدم الغزل:
yarn add nextjs-sitemap-generator
وهذا إذا كنت تستخدم NPM:
npm i --save-dev nextjs-sitemap-generator
NextJS يبدأ خادم خاص به لخدمة جميع الملفات التي تم إنشاؤها. ولكن هناك خيار آخر يسمى Custom Server يستخدم ملفًا لبدء الخادم التالي.
إذا كنت ترغب في استخدام هذه الحزمة ، فيجب عليك إنشاء ملف SPER. يمكنك العثور على كيفية القيام بذلك هنا خادم NextJS المخصص
تم إنشاء هذه الوحدة لاستخدامها في جانب الخادم المخصص للعقدة من NEXTJS.
من المفترض أن يتم استخدامه في index.js/server.js بحيث عند تهيئة الخادم ، سيتم تشغيله مرة واحدة فقط.
إذا قمت بوضعه في أي من معالج الطلبات لأداء خادم العقدة ، فقد يتأثر.
لأولئك الذين ينتشرون في Vercel:
لا يمكن نشر خادم مخصص على Vercel ، تم صنع النظام الأساسي Next.js.
على سبيل المثال:
إذا كان لديك ملف خادم المثال هذا
// server.js
const sitemap = require ( 'nextjs-sitemap-generator' ) ; // Import the package
const { createServer } = require ( 'http' )
const { parse } = require ( 'url' )
const next = require ( 'next' )
const dev = process . env . NODE_ENV !== 'production'
const app = next ( { dev } )
const handle = app . getRequestHandler ( )
/*
Here you is you have to use the sitemap function.
Using it here you are allowing to generate the sitemap file
only once, just when the server starts.
*/
sitemap ( {
alternateUrls : {
en : 'https://example.en' ,
es : 'https://example.es' ,
ja : 'https://example.jp' ,
fr : 'https://example.fr' ,
} ,
baseUrl : 'https://example.com' ,
ignoredPaths : [ 'admin' ] ,
extraPaths : [ '/extraPath' ] ,
pagesDirectory : __dirname + "\pages" ,
targetDirectory : 'static/' ,
sitemapFilename : 'sitemap.xml' ,
nextConfigPath : __dirname + "\next.config.js"
} ) ;
app . prepare ( ) . then ( ( ) => {
createServer ( ( req , res ) => {
const parsedUrl = parse ( req . url , true )
const { pathname , query } = parsedUrl
if ( pathname === '/a' ) {
app . render ( req , res , '/a' , query )
}
else if ( pathname === '/b' ) {
app . render ( req , res , '/b' , query )
} else {
handle ( req , res , parsedUrl )
} } ) . listen ( 3000 , ( err ) => {
if ( err ) throw err
console . log ( '> Ready on http://localhost:3000' )
} )
} ) إذا كنت تقوم بتصدير المشروع التالي كتطبيق ثابت HTML ، فقم بإنشاء ملف نص مولد SITEMAP في الدليل الأساسي.
يجب أن يشير pagesDirectory الخيار إلى مجلد إخراج الملفات الثابتة.
بعد إنشاء ملفات الإخراج ، قم بتشغيل node your_nextjs_sitemap_generator.js لإنشاء sitemap.
إذا تم تقديم صفحاتك بشكل ثابت ، فستحتاج إلى تعيين خيار allowFileExtensions على أنه true بحيث تحتوي الصفحات على الامتداد ، حيث تكون معظم الحالات .html .
getStaticPaths إذا كنت تستخدم next@^9.4.0 ، فقد يتم تكوين موقعك باستخدام GetStaticPaths إلى الصفحات المسبقة على الطرق الديناميكية. لإضافة ذلك إلى خريطة sitemap الخاصة بك ، تحتاج إلى تحميل ملف build_id في التكوين الخاص بك للوصول إلى دليل الإنشاء الذي تم إنشاؤه مع صفحات الإحصائيات في الداخل ، مع استبعاد كل ما ليس صفحات ثابتة:
const sitemap = require ( "nextjs-sitemap-generator" ) ;
const fs = require ( "fs" ) ;
const BUILD_ID = fs . readFileSync ( ".next/BUILD_ID" ) . toString ( ) ;
sitemap ( {
baseUrl : "https://example.com" ,
// If you are using Vercel platform to deploy change the route to /.next/serverless/pages
pagesDirectory : __dirname + "/.next/server/static/" + BUILD_ID + "/pages" ,
targetDirectory : "public/" ,
ignoredExtensions : [ "js" , "map" ] ,
ignoredPaths : [ "assets" ] , // Exclude everything that isn't static page
} ) ; // your_nextjs_sitemap_generator.js
const sitemap = require ( "nextjs-sitemap-generator" ) ;
sitemap ( {
alternateUrls : {
en : "https://example.en" ,
es : "https://example.es" ,
ja : "https://example.jp" ,
fr : "https://example.fr" ,
} ,
baseUrl : "https://example.com" ,
ignoredPaths : [ "admin" ] ,
extraPaths : [ "/extraPath" ] ,
pagesDirectory : __dirname + "\pages" ,
targetDirectory : "static/" ,
sitemapFilename : "sitemap.xml" ,
nextConfigPath : __dirname + "\next.config.js" ,
ignoredExtensions : [ "png" , "jpg" ] ,
pagesConfig : {
"/login" : {
priority : "0.5" ,
changefreq : "daily" ,
} ,
} ,
sitemapStylesheet : [
{
type : "text/css" ,
styleFile : "/test/styles.css" ,
} ,
{
type : "text/xsl" ,
styleFile : "test/test/styles.xls" ,
} ,
] ,
} ) ;
console . log ( `✅ sitemap.xml generated!` ) ;
البديل : يمكنك إضافة المجالات البديلة المقابلة للغة المتاحة. (خياري)
Baseurl : عنوان URL الذي سيتم استخدامه في بداية كل صفحة.
تجاهل EndIndExfiles : ما إذا كان يجب أن يكون ملف الفهرس في عنوان URL أو مجرد دليل ينتهي مع Slash (اختياري)
تجاهل Pathpaths : ملف أو دليل لعدم الخريطة (مثل Roque roque). (اختياري)
المستخلصات : مجموعة من المسارات الإضافية التي يجب تضمينها في خريطة الموقع (حتى لو لم تكن موجودة في PagesDirectory) (اختياري)
التجاهل : تجاهل الملفات بالامتداد. (اختياري)
PagesDirectory : الدليل حيث تعيش صفحات NextJS. يمكنك استخدام دليل آخر بينما هي صفحات NextJS. يجب أن يكون مسارًا مطلقًا .
TargetDirectory : الدليل حيث سيتم كتابة sitemap.xml.
sitemapfilename : اسم الملف ل sitemap. الإعدادات الافتراضية إلى sitemap.xml . (خياري)
PagesConfig : تكوين كائن من الأولوية والتغيير لكل مسار. يقبل مفاتيح مسار REGEX أنماط (اختيارية)
ورقة SitemapstyleSh : مجموعة من كائنات النمط التي سيتم تطبيقها على sitemap. (اختياري)
NextConfigPath (المستخدمة في الطرق الديناميكية): المكالمات exportPathMap إذا تم تصديرها من ملف nextConfigPath JS.
انظر هذا لفهم كيفية القيام بذلك (https://nextjs.org/docs/api- المرجع/next.config.js/exportpathmap) (اختياري)
ALLEFILEESTENTES (المستخدمة للتطبيقات الثابتة): يضمن عرض تمديد الملف مع المسار في sitemap. إذا كنت تستخدم NextConfigPath مع ExportTrailingsLash في التكوين التالي ، فسيتم تجاهل ALTERFileStensions. (خياري)
في الوقت الحالي ، يطابق المتجاهلين مهما كان الأمر الذي تضعه في الوقت الذي تضعه فيه ، وتجاهلًا إذا كانت هناك ملفات أو أدلة. في الإصدارات التالية ، سيتم إصلاح هذا.