」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Next.js 應用程式中安裝和使用「next-sitemap」:逐步指南

如何在 Next.js 應用程式中安裝和使用「next-sitemap」:逐步指南

發佈於2024-11-08
瀏覽:966

How to Install and Use `next-sitemap` in a Next.js App: A Step-by-Step Guide

如果您使用 Next.js 建立網站,您可能希望搜尋引擎能夠有效地發現您的頁面並為其建立索引。改進此過程的一種方法是建立網站地圖。網站地圖是一個列出您網站上所有網址的文件,可協助 Google 等搜尋引擎更快地抓取您的網站並將其編入索引。

在本指南中,我們將逐步介紹如何在 Next.js 專案中安裝和設定 next-sitemap。我們還將介紹擁有網站地圖的好處,並包含帶有「Hello World」Next.js 應用程式的範例程式碼以說明其工作原理。

使用下一個網站地圖的好處

在我們深入了解安裝過程之前,讓我們先簡單討論一下使用 next-sitemap 的主要好處:

  1. 改進 SEO:結構良好的網站地圖可幫助 Google 等搜尋引擎更有效地發現您的頁面,從而實現更好的索引和潛在的更高搜尋排名。

  2. 更快的抓取:透過向搜尋引擎提供您網站的路線圖,您可以讓他們更快地抓取您的頁面並為其建立索引。

  3. 處理動態路由:對於具有動態路由的網站,下一個網站地圖可以輕鬆產生動態內容的 URL,確保您的所有頁面都可被發現。

  4. 自訂網站地圖:下一個網站地圖可讓您使用設定優先順序、變更頻率甚至排除某些頁面等選項來自訂網站地圖。

第 1 步:安裝下一個站點地圖

首先,您需要在 Next.js 專案中安裝 next-sitemap 套件。在終端機中執行以下命令:

npm install next-sitemap

或者,如果您使用的是 Yarn:

yarn add next-sitemap

步驟2:建立next-sitemap.js設定檔

安裝套件後,下一步是在專案的根目錄下建立一個名為 next-sitemap.config.js 的設定檔。該文件將包含用於生成網站地圖的設定。

這是一個基本配置:

// next-sitemap.config.js
module.exports = {
  siteUrl: process.env.SITE_URL || 'http://localhost:3000', // Your website's URL
  generateRobotsTxt: true, // (Optional) Generates a robots.txt file
  sitemapSize: 7000, // Number of URLs per sitemap file
}

在上面的程式碼中,我們使用 siteUrl 指定您網站的基本 URL。 generateRobotsTxt 選項會在網站地圖旁邊產生一個 robots.txt 文件,而 sitemapSize 則確定要包含在每個網站地圖檔案中的 URL 數量。

步驟 3:使用 Sitemap 腳本更新 package.json

現在,您需要在 package.json 檔案中新增一個腳本,以便在建立專案時產生網站地圖。

具體操作方法如下:

{
  "scripts": {
    "build": "next build",
    "postbuild": "next-sitemap"
  }
}

這將確保每次建置後,都會根據您的配置自動產生網站地圖。

第 4 步:建立並產生網站地圖

現在一切都已設定完畢,運行以下命令來建立專案並產生網站地圖:

npm run build

或使用紗線:

yarn build

建置完成後,將在專案的 public/ 資料夾中產生 sitemap.xml 檔案(以及可選的 robots.txt 檔案)。這些檔案將包含您的 Next.js 應用程式的所有 URL,可供搜尋引擎抓取。

範例:帶有 next-sitemap 的“Hello World”Next.js 應用程式

為了示範 next-sitemap 的工作原理,讓我們建立一個簡單的「Hello World」Next.js 應用程式。這是一個基本的 Next.js 頁面:

// pages/index.js
export default function Home() {
  return (
    

Hello World

Welcome to my Next.js app!

); }

現在,像這樣設定你的 next-sitemap.config.js:

// next-sitemap.config.js
module.exports = {
  siteUrl: process.env.SITE_URL || 'http://localhost:3000',
  generateRobotsTxt: true,
};

接下來,將以下內容加入 package.json 中:

{
  "scripts": {
    "build": "next build",
    "postbuild": "next-sitemap"
  }
}

在執行 npm run build 後,您將在 public/ 目錄中找到您的網站地圖,其中包含「Hello World」主頁的 URL。

現場演示

我的網站 https://rajeshkumaryadav.com 正在使用此套件在建置過程中自動產生網站地圖。以下是包含 sitemap.xml

的 robots.txt

https://rajeshkumaryadav.com/robots.txt
https://www.rajeshkumaryadav.com/sitemap.xml
https://www.rajeshkumaryadav.com/sitemap-0.xml

結論

透過遵循本指南中概述的步驟,您現在已將 next-sitemap 整合到您的 Next.js 專案中。該工具提供了一種生成網站地圖和robots.txt檔案的簡單方法,可顯著提高您網站的SEO並確保搜尋引擎可以有效地發現您的所有內容。

透過此設置,您就可以讓您的 Next.js 應用程式對搜尋引擎更加友善並建立更好的索引!

版本聲明 本文轉載於:https://dev.to/rajeshkumaryadavdotcom/how-to-install-and-use-next-sitemap-in-a-nextjs-app-a-step-by-step-guide-114l?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    程式設計 發佈於2025-07-03
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-07-03
  • 如何解決AppEngine中“無法猜測文件類型,使用application/octet-stream...”錯誤?
    如何解決AppEngine中“無法猜測文件類型,使用application/octet-stream...”錯誤?
    appEngine靜態文件mime type override ,靜態文件處理程序有時可以覆蓋正確的mime類型,在錯誤消息中導致錯誤消息:“無法猜測mimeType for for file for file for [File]。 application/application/octet...
    程式設計 發佈於2025-07-03
  • Python中嵌套函數與閉包的區別是什麼
    Python中嵌套函數與閉包的區別是什麼
    嵌套函數與python 在python中的嵌套函數不被考慮閉合,因為它們不符合以下要求:不訪問局部範圍scliables to incling scliables在封裝範圍外執行範圍的局部範圍。 make_printer(msg): DEF打印機(): 打印(味精) ...
    程式設計 發佈於2025-07-03
  • 如何在Java中正確顯示“ DD/MM/YYYY HH:MM:SS.SS”格式的當前日期和時間?
    如何在Java中正確顯示“ DD/MM/YYYY HH:MM:SS.SS”格式的當前日期和時間?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解決方案: args)拋出異常{ 日曆cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    程式設計 發佈於2025-07-03
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-07-03
  • 同實例無需轉儲複製MySQL數據庫方法
    同實例無需轉儲複製MySQL數據庫方法
    在同一實例上複製一個MySQL數據庫而無需轉儲在同一mySQL實例上複製數據庫,而無需創建InterMediate sqql script。以下方法為傳統的轉儲和IMPORT過程提供了更簡單的替代方法。 直接管道數據 MySQL手動概述了一種允許將mysqldump直接輸出到MySQL cli...
    程式設計 發佈於2025-07-03
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    程式設計 發佈於2025-07-03
  • 使用jQuery如何有效修改":after"偽元素的CSS屬性?
    使用jQuery如何有效修改":after"偽元素的CSS屬性?
    在jquery中了解偽元素的限制:訪問“ selector 嘗試修改“:”選擇器的CSS屬性時,您可能會遇到困難。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    程式設計 發佈於2025-07-03
  • PHP未來:適應與創新
    PHP未來:適應與創新
    PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。 引言在編程世界中,PHP一直是網頁開發的中流砥柱。作為一個從1994年就開始發展...
    程式設計 發佈於2025-07-03
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-07-03
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-07-03
  • 為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,輸出...
    程式設計 發佈於2025-07-03
  • Java中如何使用觀察者模式實現自定義事件?
    Java中如何使用觀察者模式實現自定義事件?
    在Java 中創建自定義事件的自定義事件在許多編程場景中都是無關緊要的,使組件能夠基於特定的觸發器相互通信。本文旨在解決以下內容:問題語句我們如何在Java中實現自定義事件以促進基於特定事件的對象之間的交互,定義了管理訂閱者的類界面。 以下代碼片段演示瞭如何使用觀察者模式創建自定義事件: args...
    程式設計 發佈於2025-07-03
  • Go語言如何動態發現導出包類型?
    Go語言如何動態發現導出包類型?
    與反射軟件包中的有限類型的發現能力相反,本文探索了替代方法,探索了在Runruntime。 go import( “ FMT” “去/進口商” ) func main(){ pkg,err:= incorter.default()。導入(“ time”) 如果er...
    程式設計 發佈於2025-07-03

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3