เนื่องจากไลบรารีที่เกิดขึ้นใหม่ที่ทำหน้าที่เหมือนกันไลบรารีนี้ถูกทำเครื่องหมายว่าเลิกใช้แล้วและพิจารณาใช้ไลบรารี Next-Sitemap
เรากำลังมองหาผู้ดูแลเพราะฉันไม่มีเวลาพอที่จะรักษาแพ็คเกจ
โปรดพิจารณาที่จะบริจาคเพื่อการบำรุงรักษาโครงการ
บริจาค
Simple sitemap.xml Mapper สำหรับโครงการ next.js
ในการติดตั้งแพ็คเกจดำเนินการนี้ในเทอร์มินัลของคุณหากคุณใช้เส้นด้าย:
yarn add nextjs-sitemap-generator
และถ้าคุณใช้ NPM:
npm i --save-dev nextjs-sitemap-generator
NextJS เริ่มต้นเป็นเซิร์ฟเวอร์ของตัวเองเพื่อให้บริการไฟล์ที่สร้างขึ้นทั้งหมด แต่มีตัวเลือกอื่นที่เรียกว่าเซิร์ฟเวอร์ที่กำหนดเองที่ใช้ไฟล์เพื่อเริ่มเซิร์ฟเวอร์ถัดไป
หากคุณต้องการใช้แพ็คเกจนี้คุณต้องสร้างไฟล์ Sever คุณสามารถค้นหาวิธีการทำที่นี่ NextJS Custom Server
โมดูลนี้ถูกสร้างขึ้นเพื่อใช้ที่ฝั่งเซิร์ฟเวอร์ที่กำหนดเองของ NEXTJS
มันมีความหมายที่จะใช้ใน index.js/server.js เพื่อให้เมื่อเซิร์ฟเวอร์เริ่มต้นมันจะทำงานเพียงครั้งเดียว
หากคุณวางไว้ในตัวจัดการคำขอใด ๆ ของประสิทธิภาพโหนดเซิร์ฟเวอร์อาจได้รับผลกระทบ
สำหรับคนที่ติดตั้งใน Vercel:
ไม่สามารถปรับใช้เซิร์ฟเวอร์ที่กำหนดเองบน Vercel ซึ่งเป็นแพลตฟอร์มถัดไป 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-Generator Next-Generator ในไดเรกทอรีพื้นฐาน
ตัวเลือก pagesDirectory ควรชี้ไปที่โฟลเดอร์เอาต์พุตไฟล์แบบคงที่
หลังจากสร้างไฟล์เอาต์พุตให้เรียกใช้ node your_nextjs_sitemap_generator.js เพื่อสร้าง sitemap
หากหน้าเว็บของคุณได้รับการเสิร์ฟแบบคงที่คุณจะต้องตั้งค่าตัวเลือก allowFileExtensions เป็น true เพื่อให้หน้ามีส่วนขยายกรณีส่วนใหญ่เป็น .html
getStaticPaths หากคุณใช้ next@^9.4.0 คุณอาจมีการกำหนดค่าไซต์ของคุณด้วย getStaticPaths เพื่อ pregenerate หน้าบนเส้นทางไดนามิก ในการเพิ่มสิ่งเหล่านั้นลงในแผนผังไซต์ของคุณคุณต้องโหลดไฟล์ build_id ลงในการกำหนดค่าของคุณเพื่อไปยังไดเรกทอรี build ที่สร้างขึ้นพร้อมหน้าสถิติภายในในขณะที่ไม่รวมทุกสิ่งที่ไม่ใช่หน้าคงที่:
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 ที่จะใช้ในตอนต้นของแต่ละหน้า
ไม่สนใจ InoreIndexFiles : ไฟล์ดัชนีควรอยู่ใน URL หรือเพียงแค่ไดเรกทอรีที่ลงท้ายด้วย Slash (ไม่บังคับ)
NegrigedPaths : ไฟล์หรือไดเรกทอรีไม่แผนที่ (เช่นเส้นทางผู้ดูแลระบบ) (ไม่บังคับ)
Extrapaths : อาร์เรย์ของเส้นทางพิเศษเพื่อรวมไว้ในแผนผังไซต์ (แม้ว่าจะไม่ได้อยู่ใน PagesDirectory) (ไม่บังคับ)
ucheredExtensions : ละเว้นไฟล์โดยส่วนขยาย (ไม่บังคับ)
PAGESDIRECTORY : ไดเรกทอรีที่หน้า NextJS อาศัยอยู่ คุณสามารถใช้ไดเรกทอรีอื่นในขณะที่พวกเขาเป็นหน้า NextJS มันจะต้องเป็นเส้นทางที่แน่นอน
TargetDirectory : ไดเรกทอรีที่ sitemap.xml จะเขียน
SiteMapFilename : ชื่อไฟล์สำหรับ Sitemap ค่าเริ่มต้นเป็น sitemap.xml (ไม่จำเป็น)
PagesconFig : การกำหนดค่าวัตถุที่มีลำดับความสำคัญและ ChangeFreQ ต่อเส้นทาง ยอมรับรูปแบบ regex (ตัวเลือก) คีย์เส้นทางจะต้องเป็นตัวพิมพ์เล็ก
SiteMapstylesheet : อาร์เรย์ของวัตถุสไตล์ที่จะนำไปใช้กับ Sitemap (ไม่บังคับ)
NextConfigPath (ใช้สำหรับเส้นทางไดนามิก): การโทร exportPathMap หากส่งออกจากไฟล์ nextConfigPath JS
ดูสิ่งนี้เพื่อทำความเข้าใจวิธีการทำ (https://nextjs.org/docs/api-reference/next.config.js/exportpathmap) (ไม่บังคับ)
AllowFileExtensions (ใช้สำหรับแอปพลิเคชันแบบคงที่): ตรวจสอบให้แน่ใจว่าส่วนขยายไฟล์จะปรากฏขึ้นพร้อมกับเส้นทางใน Sitemap หากคุณใช้ NextConfigPath กับ ExportTrailingsLash ในการกำหนดค่าถัดไปจะถูกละเว้น (ไม่จำเป็น)
สำหรับตอนนี้ การละเว้นนั้น ตรงกับสิ่งที่ cointaning สิ่งที่คุณใส่โดยไม่สนใจว่ามีไฟล์หรือไดเรกทอรี ในเวอร์ชันถัดไปสิ่งนี้จะได้รับการแก้ไข