Skapa en dynamisk sitemap med Next.js App Router
Innehållsförteckning
- Introduktion
- Dynamic Sitemap med Next.js och app-router
- Lägga till meta-taggar på webbplatsen
- Skapa en sitemap med app-router
- Förberedelse för sitemap
- Generera sitemap dynamiskt med Next.js
- Hantera canonical URL
- Dynamic Metadata för blogginlägg
- Implementera Open Graph-datataggar
- Lägga till Twitter-kort
- Använda alternativa objekt för återanvändning
- Använda en funktion för att generera metadata
📰 Skapa en dynamisk sitemap och metadata för din webbplats med Next.js
I den här artikeln kommer vi att utforska hur du skapar en dynamisk sitemap och lägger till metadata på din webbplats med hjälp av Next.js och app-router. Att ha en sitemap är avgörande för att förbättra din webbplats SEO och ge sökmotorer som Google information om webbsidorna på din webbplats. Dessutom kommer vi att utforska hur du kan lägga till meta-taggar som Open Graph-data och Twitter-kort för att göra dina webbsidor mer delbara och tilltalande när de delas på sociala medier.
Introduktion
Innan vi dyker in i detaljerna är det viktigt att förstå varför en dynamisk sitemap och metadata är viktigt för din webbplats. En sitemap är en lista över alla webbsidor på din webbplats som du vill att sökmotorer ska indexera. Genom att tillhandahålla en sitemap kan du informera sökmotorer om hur olika sidor på din webbplats är strukturerade och prioriterade. Detta kan hjälpa sökmotorer att indexera dina sidor snabbare.
Metadata å andra sidan är information som beskriver innehållet på en webbsida. Denna information inkluderar vanligtvis titeln på sidan, en kort beskrivning och eventuellt en bild. Genom att lägga till metadata kan du förbättra webbsidans synlighet och locka läsare när den delas på sociala medier eller visas i sökresultaten.
Dynamic Sitemap med Next.js och app-router
Att skapa en dynamisk sitemap med Next.js och app-router är en relativt enkel process. Det första du behöver göra är att skapa en ny fil kallad "sitemap.ts" i din "Source/app"-mapp. I denna fil kommer du att definiera strukturen för din sitemap.
import { useRouter } from 'next/router';
const Sitemap = () => {
const router = useRouter();
const pages = [
{ url: '/', lastModified: '2022-07-01', changeFrequency: 'daily' },
{ url: '/about', lastModified: '2022-07-01', changeFrequency: 'daily' },
{ url: '/posts', lastModified: '2022-07-02', changeFrequency: 'daily' },
];
const generateSitemap = () => {
const host = process.env.SITE_URL || 'https://www.example.com';
const sitemap = [];
pages.forEach((page) => {
const { url, lastModified, changeFrequency } = page;
sitemap.push({
loc: `${host}${url}`,
lastmod: lastModified,
changefreq: changeFrequency,
});
});
return sitemap;
};
const sitemap = generateSitemap();
return sitemap;
};
export default Sitemap;
I detta exempel definieras en array (pages) med objekt som representerar de olika sidorna på din webbplats. Varje objekt innehåller URL:en till sidan, senaste ändringsdatum och ändringsfrekvens. Genom att använda process.env kan du också hämta webbplatsens URL från miljövariabler.
För att generera själva sitemapen går vi igenom varje sida i arrayen och skapar ett nytt objekt med rätt struktur och innehåll. Vi lägger till detta objekt i en ny array (sitemap) som lagras i variabeln sitemap.
Detta är bara en grundläggande pocess, och det finns fler avancerade sätt att skapa en dynamisk sitemap om din webbplats har en mer komplex sidstruktur eller om du behöver hantera stora mängder sidor. Men för de flesta webbplatser kommer denna metod att fungera bra.
Lägga till meta-taggar på webbplatsen
När du har konfigurerat din dynamiska sitemap vill du förmodligen också lägga till metadata på dina webbsidor. Metadata, som titel och beskrivning, kan användas av sökmotorer, sociala medieplattformar och andra system för att visa relevant information om din webbplats. Detta kan hjälpa till att förbättra din webbplats synlighet och locka besökare.
För att lägga till meta-taggar i ditt Next.js-projekt kan du använda layout-komponenten och "metadata"-objektet. I denna komponent kan du definiera den generella layouten för dina webbsidor och inkludera de meta-taggar du behöver. Nedan är ett exempel på hur detta kan se ut:
import Head from 'next/head';
const Layout = ({ children }) => {
const metadata = {
title: 'Min webbplats',
description: 'En beskrivning av min webbplats',
image: '/public/og-image.png',
};
return (
<div>
<Head>
<meta charSet="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content={metadata.description} />
<meta property="og:title" content={metadata.title} />
<meta property="og:description" content={metadata.description} />
<meta property="og:image" content={metadata.image} />
</Head>
{children}
</div>
);
};
export default Layout;
I detta exempel finns det ett "metadata"-objekt som definierar den grundläggande informationen för dina meta-taggar. Du kan självklart anpassa detta efter dina behov och specifika sidor. I "Head"-komponenten läggs sedan de olika meta-taggtillinjerna till med hjälp av rätt egenskaper och värden.
Detta möjliggör anpassning av metadata för varje sida i ditt projekt och ger dig större flexibilitet och kontroll över hur din webbplats visas på sökresultatssidor och sociala medieplattformar.
Skapa en sitemap med app-router
För att inkludera den dynamiska sitemap-funktionen i ditt Next.js-projekt med app-router kan du göra följande:
- Skapa en ny sida eller komponent som ska hantera sitemap-genereringen.
- Konfigurera dina sidor och deras relaterade metadata i sitemap-funktionen.
- Exportera sitemap-funktionen från sidan eller komponenten.
- Använd funktionen i din Next.js-sida genom att importera och rendera den som en HTML-sida eller XML-sida.
För att du ska kunna visa sitemap på din webbplats, kan du skapa en ny sida som heter "sitemap.tsx" (om du har användning av JSX) eller "sitemap.ts" (om du bara använder vanlig TypeScript). I denna sida kan du använda sitemap-funktionen vi skapade tidigare och generera sitemapen.
// Importera sitemap-funktionen
import Sitemap from '../Source/app/sitemap';
const SitemapPage = () => {
// Generera sitemap
const sitemap = Sitemap();
return (
<div>
<h1>Sitemap</h1>
<pre>{JSON.stringify(sitemap, null, 2)}</pre>
</div>
);
};
export default SitemapPage;
I detta exempel renderar vi bara en enkel HTML-sida med title-taggen "Sitemap" och visar sitemap-data som en formaterad JSON-sträng. Du kan självklart anpassa utseendet och strukturen på din sitemap-sida efter dina behov.
För att visa sitemapen på din webbplats måste du också konfigurera dina routing-regler och peka den nya "sitemap"-sidan till rätt URL. Detta kan göras genom att uppdatera "app.tsx" eller motsvarande fil i ditt Next.js-projekt.
import { AppRouter, PageRoute } from 'app-router';
import SitemapPage from './pages/sitemap';
const routes: PageRoute[] = [
// Andra sidor...
{ path: '/sitemap', component: SitemapPage },
];
const App = () => {
return (
<AppRouter routes={routes}>
<Layout>
<Component />
</Layout>
</AppRouter>
);
};
export default App;
Genom att lägga till en ny "PageRoute" i din routing-konfiguration kan du associera den nya "sitemap"-sidan till rätt URL. Detta gör det möjligt för användare att enkelt navigera till sitemap-sidan på din webbplats och se den genererade sitemapen.
Det var en kort översikt över hur du kan skapa en dynamisk sitemap och lägga till metadata på din webbplats med Next.js och app-router. Genom att följa dessa steg kan du förbättra din webbplats SEO och göra den mer användarvänlig och lockande när den delas på sociala medier.