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

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

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

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]刪除
最新教學 更多>
  • 解決Spring Security 4.1及以上版本CORS問題指南
    解決Spring Security 4.1及以上版本CORS問題指南
    彈簧安全性cors filter:故障排除常見問題 在將Spring Security集成到現有項目中時,您可能會遇到與CORS相關的錯誤,如果像“訪問Control-allo-allow-Origin”之類的標頭,則無法設置在響應中。為了解決此問題,您可以實現自定義過濾器,例如代碼段中的MyFi...
    程式設計 發佈於2025-05-22
  • 為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    使用php dateTime修改月份:發現預期的行為在使用PHP的DateTime類時,添加或減去幾個月可能並不總是會產生預期的結果。正如文檔所警告的那樣,“當心”這些操作的“不像看起來那樣直觀。 考慮文檔中給出的示例:這是內部發生的事情: 現在在3月3日添加另一個月,因為2月在2001年只有2...
    程式設計 發佈於2025-05-22
  • C++中如何將獨占指針作為函數或構造函數參數傳遞?
    C++中如何將獨占指針作為函數或構造函數參數傳遞?
    在構造函數和函數中將唯一的指數管理為參數 unique pointers( unique_ptr [2啟示。通過值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法將唯一指針的所有權轉移到函數/對象。指針的內容被移至功能中,在操作...
    程式設計 發佈於2025-05-22
  • Go語言如何動態發現導出包類型?
    Go語言如何動態發現導出包類型?
    與反射軟件包中的有限類型的發現能力相反,本文探索了替代方法,探索了在Runruntime。 go import( “ FMT” “去/進口商” ) func main(){ pkg,err:= incorter.default()。導入(“ time”) 如果er...
    程式設計 發佈於2025-05-22
  • 左連接為何在右表WHERE子句過濾時像內連接?
    左連接為何在右表WHERE子句過濾時像內連接?
    左JOIN CONUNDRUM:WITCHING小時在數據庫Wizard的領域中變成內在的加入很有趣,當將c.foobar條件放置在上面的Where子句中時,據說左聯接似乎會轉換為內部連接。僅當滿足A.Foo和C.Foobar標準時,才會返回結果。 為什麼要變形?關鍵在於其中的子句。當左聯接的右側...
    程式設計 發佈於2025-05-22
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    在嘗試為JavaScript對象創建動態鍵時,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正確的方法採用方括號: jsobj ['key''i] ='example'1; 在JavaScript中,數組是一...
    程式設計 發佈於2025-05-22
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    postgresql:為每個唯一標識符在postgresql中提取最後一行,您可能需要遇到與數據集合中每個不同標識的信息相關的信息。考慮以下數據:[ 1 2014-02-01 kjkj 在數據集中的每個唯一ID中檢索最後一行的信息,您可以在操作員上使用Postgres的有效效率: id dat...
    程式設計 發佈於2025-05-22
  • 在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在JTable中維護jtable單元格渲染後,在JTable中,在JTable中實現自定義單元格渲染和編輯功能可以增強用戶體驗。但是,至關重要的是要確保即使在編輯操作後也保留所需的格式。 在設置用於格式化“價格”列的“價格”列,用戶遇到的數字格式丟失的“價格”列的“價格”之後,問題在設置自定義單元...
    程式設計 發佈於2025-05-22
  • 在Ubuntu/linux上安裝mysql-python時,如何修復\“ mysql_config \”錯誤?
    在Ubuntu/linux上安裝mysql-python時,如何修復\“ mysql_config \”錯誤?
    mysql-python安裝錯誤:“ mysql_config找不到”“ 由於缺少MySQL開發庫而出現此錯誤。解決此問題,建議在Ubuntu上使用該分發的存儲庫。使用以下命令安裝Python-MysqldB: sudo apt-get安裝python-mysqldb sudo pip in...
    程式設計 發佈於2025-05-22
  • 編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    錯誤:“ usr/bin/ld:找不到-l “ 此錯誤表明鏈接器在鏈接您的可執行文件時無法找到指定的庫。為了解決此問題,我們將深入研究如何指定庫路徑並將鏈接引導到正確位置的詳細信息。 添加庫搜索路徑的一個可能的原因是,此錯誤是您的makefile中缺少庫搜索路徑。要解決它,您可以在鏈接器命令中添...
    程式設計 發佈於2025-05-22
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-05-22
  • 如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求模擬瀏覽器行為,以及偽造的用戶代理提供了一個用戶 - 代理標頭一個有效方法是提供有效的用戶式header,以提供有效的用戶 - 設置,該標題可以通過browser和Acterner Systems the equestersystermery和操作系統。通過模仿像Chro...
    程式設計 發佈於2025-05-22
  • eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    稱量()和ast.literal_eval()中的Python Security 在使用用戶輸入時,必須優先確保安全性。強大的Python功能Eval()通常是作為潛在解決方案而出現的,但擔心其潛在風險。 This article delves into the differences betwee...
    程式設計 發佈於2025-05-22
  • 如何在Java字符串中有效替換多個子字符串?
    如何在Java字符串中有效替換多個子字符串?
    在java 中有效地替換多個substring,需要在需要替換一個字符串中的多個substring的情況下,很容易求助於重複應用字符串的刺激力量。但是,對於大字符串或使用許多字符串時,這可能是降低的。 利用正則表達式Example UsageConsider a scenario where ...
    程式設計 發佈於2025-05-22

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

Copyright© 2022 湘ICP备2022001581号-3