Maison  >  Article  >  interface Web  >  Comment implémenter le référencement dans Next.js ?

Comment implémenter le référencement dans Next.js ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-10 07:50:02172parcourir

How to Implement SEO in Next.js?

Le référencement (Search Engine Optimization) est un élément crucial de tout projet Web. Il aide votre site Web à être mieux classé dans les résultats des moteurs de recherche, générant ainsi plus de trafic et améliorant votre visibilité en ligne. Dans Next.js 14, il existe des outils puissants qui permettent aux développeurs de mettre facilement en œuvre les meilleures pratiques de référencement.

Dans ce blog, nous explorerons comment gérer dynamiquement les métadonnées SEO à l'aide de Next.js 14, y compris les balises de titre, les méta descriptions, Open Graph et les cartes Twitter. Nous discuterons également de la façon de créer des URL optimisées pour le référencement et de structurer votre contenu pour améliorer votre classement.


Pourquoi le référencement est-il important pour les développeurs ?

Le référencement est essentiel pour garantir que votre contenu atteigne votre public. Sans un bon référencement, même les meilleurs sites Web pourraient avoir du mal à attirer du trafic. Next.js offre de nombreuses fonctionnalités intégrées qui permettent aux développeurs de mettre en œuvre facilement les meilleures pratiques de référencement sans ajouter trop de complexité.


1. Gestion des métadonnées SEO avec Next.js 14

Next.js 14 simplifie la gestion des métadonnées SEO grâce à sa nouvelle mise en page et sa structure basée sur les pages. Au lieu d’ajouter manuellement des balises au HTML de chaque page, vous pouvez centraliser la configuration de vos métadonnées de manière structurée.

Balises de titre et méta descriptions

La balise titre et la méta description sont deux des éléments SEO les plus importants. Le La balise est utilisée par les moteurs de recherche pour comprendre le contenu de la page, tandis que la méta description est affichée dans les résultats des moteurs de recherche sous le titre.

Avec Next.js, vous pouvez les gérer dans le composant Head ou en utilisant la configuration des métadonnées.

Voici comment configurer les métadonnées SEO pour votre site :

// seo-config.js
export const SEO_DATA = {
  home: {
    title: "Best Bread Recipes | Easy & Delicious Homemade Ideas",
    description: "Discover the best bread recipes, from classic white to artisan loaves. Easy, step-by-step instructions for perfect homemade bread every time.",
    keywords: "bread, recipes, homemade bread, easy bread recipes",
    canonical: "https://example.com",
  },

// here You can add other page title, Description,Keywords, etc.
/*

**/
  authors: "John Doe, Jane Smith",
  siteName: "BreadMaster",
};

export const CONFIG = {
  BASE_URL: "https://example.com",
};

Maintenant, vous pouvez injecter dynamiquement ces valeurs dans la section

de vos pages à l'aide du composant Head.
// app/page.js or app/layout.js
import { SEO_DATA, CONFIG } from './seo-config';  

export const metadata = {
  title: SEO_DATA.home.title,
  description: SEO_DATA.home.description,
  keywords: SEO_DATA.home.keywords,
  authors: SEO_DATA.authors,
  alternates: {
    canonical: SEO_DATA.home.canonical,
  },
  openGraph: {
    title: SEO_DATA.home.title,
    description: SEO_DATA.home.description,
    url: CONFIG.BASE_URL,
    siteName: SEO_DATA.siteName,
    images: [
      {
        url: `${CONFIG.BASE_URL}/assets/images/image8.jpg`,
        width: 1200,
        height: 630,
      },
    ],
    locale: "en_US",
    type: "website",
  },
  twitter: {
    card: "summary_large_image",
    site: "@user_name", 
    title: SEO_DATA.home.title,
    description: SEO_DATA.home.description,
    image: `${CONFIG.BASE_URL}/assets/images/image8.jpg`,
  },
};

Explication:

  • Balise de titre : La balise La balise définit le titre de la page et est essentielle pour le référencement.</p></li> <li><p><strong>Méta description :</strong> La <meta name="description"> La balise fournit un résumé concis du contenu de la page, souvent affiché sous le titre dans les résultats de recherche.</p></li> <li><p><strong>Balises Open Graph :</strong> Ces balises sont utilisées pour contrôler la façon dont votre page est affichée sur les plateformes de médias sociaux comme Facebook et LinkedIn.</p></li> <li><p><strong>Cartes Twitter :</strong> Ces balises optimisent la façon dont votre contenu apparaît lorsqu'il est partagé sur Twitter.</p></li> </ul> <hr> <h3> 2. Métadonnées dynamiques pour les articles de blog </h3> <p>Pour le contenu dynamique comme les articles de blog ou les pages de produits, vous pouvez utiliser la fonction generateMetadata pour récupérer des données et générer des métadonnées SEO page par page. Cela garantit que chaque page est entièrement optimisée pour le référencement.</p> <p>par exemple :<br> </p> <pre class="brush:php;toolbar:false">// seo-config.js export const SEO_DATA = { home: { title: "Best Bread Recipes | Easy & Delicious Homemade Ideas", description: "Discover the best bread recipes, from classic white to artisan loaves. Easy, step-by-step instructions for perfect homemade bread every time.", keywords: "bread, recipes, homemade bread, easy bread recipes", canonical: "https://example.com", }, // here You can add other page title, Description,Keywords, etc. /* **/ authors: "John Doe, Jane Smith", siteName: "BreadMaster", }; export const CONFIG = { BASE_URL: "https://example.com", }; </pre> <p>Dans l'exemple ci-dessus, nous récupérons dynamiquement les métadonnées des articles de <strong>blog individuel</strong> en fonction du paramètre slug, garantissant que chaque article possède des métadonnées SEO uniques.</p> <hr> <h3> 3. Création d'une structure de contenu optimisée pour le référencement avec des balises d'en-tête </h3> <p>En plus des balises méta, la structure de votre contenu affecte également le référencement. Les balises d'en-tête (<h1>, <h2>, <h3>, etc.) aident les utilisateurs et les moteurs de recherche à comprendre l'organisation de votre contenu.<br> </p> <pre class="brush:php;toolbar:false">// app/page.js or app/layout.js import { SEO_DATA, CONFIG } from './seo-config'; export const metadata = { title: SEO_DATA.home.title, description: SEO_DATA.home.description, keywords: SEO_DATA.home.keywords, authors: SEO_DATA.authors, alternates: { canonical: SEO_DATA.home.canonical, }, openGraph: { title: SEO_DATA.home.title, description: SEO_DATA.home.description, url: CONFIG.BASE_URL, siteName: SEO_DATA.siteName, images: [ { url: `${CONFIG.BASE_URL}/assets/images/image8.jpg`, width: 1200, height: 630, }, ], locale: "en_US", type: "website", }, twitter: { card: "summary_large_image", site: "@user_name", title: SEO_DATA.home.title, description: SEO_DATA.home.description, image: `${CONFIG.BASE_URL}/assets/images/image8.jpg`, }, }; </pre> <ul> <li><p><strong>Tag H1 :</strong> C'est votre rubrique principale. Utilisez-le pour le mot-clé principal de la page.</p></li> <li><p><strong>Balises H2, H3 :</strong> Utilisez-les pour les sous-titres et les sections. Ils aident à organiser le contenu et facilitent le suivi des utilisateurs et des moteurs de recherche.</p></li> </ul> <p>La mise en œuvre du référencement dans Next.js 14 est simple et peut être effectuée efficacement grâce à une combinaison des options <head> configuration du composant et des <strong>métadonnées</strong>. En suivant les meilleures pratiques de référencement telles que l'optimisation des balises de titre, les méta descriptions, l'utilisation de balises d'en-tête et la garantie d'URL propres, vous pouvez augmenter la visibilité de votre site Web et améliorer ses performances dans les classements des moteurs de recherche.</p> <p>Avec Next.js, les développeurs peuvent gérer le référencement de manière dynamique, en garantissant que chaque page ou publication dispose de son propre ensemble de métadonnées optimisées pour les meilleurs résultats. Si vous cherchez à améliorer le référencement de votre site, ces outils simples mais puissants vous mettront sur la bonne voie.</p> <p>Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!</p></div><div class="nphpQianMsg"><a href="javascript:void(0);">html</a> <a href="javascript:void(0);">if</a> <a href="javascript:void(0);">for</a> <a href="javascript:void(0);">while</a> <a href="javascript:void(0);">using</a> <a href="javascript:void(0);">JS</a> <a href="javascript:void(0);">function</a> <a href="javascript:void(0);">this</a> <a href="javascript:void(0);">SEO</a><div class="clear"></div></div><div class="nphpQianSheng"><span>Déclaration:</span><div>Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn</div></div></div><div class="nphpSytBox"><span>Article précédent:<a class="dBlack" title="Comment déterminer la taille et les dimensions d’une image dans un navigateur Web ?" href="http://m.php.cn/fr/faq/1796678915.html">Comment déterminer la taille et les dimensions d’une image dans un navigateur Web ?</a></span><span>Article suivant:<a class="dBlack" title="Comment déterminer la taille et les dimensions d’une image dans un navigateur Web ?" href="http://m.php.cn/fr/faq/1796678924.html">Comment déterminer la taille et les dimensions d’une image dans un navigateur Web ?</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>Articles Liés</h2><em><a href="http://m.php.cn/fr/article.html" class="bBlack"><i>Voir plus</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/fr/faq/1609.html" title="Une analyse approfondie du composant de groupe de liste Bootstrap" class="aBlack">Une analyse approfondie du composant de groupe de liste Bootstrap</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/fr/faq/1640.html" title="Explication détaillée du currying de la fonction JavaScript" class="aBlack">Explication détaillée du currying de la fonction JavaScript</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/fr/faq/1949.html" title="Exemple complet de génération de mot de passe JS et de détection de force (avec téléchargement du code source de démonstration)" class="aBlack">Exemple complet de génération de mot de passe JS et de détection de force (avec téléchargement du code source de démonstration)</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/fr/faq/2248.html" title="Angularjs intègre l'interface utilisateur WeChat (weui)" class="aBlack">Angularjs intègre l'interface utilisateur WeChat (weui)</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/fr/faq/2351.html" title="Comment basculer rapidement entre le chinois traditionnel et le chinois simplifié avec JavaScript et l'astuce permettant aux sites Web de prendre en charge le basculement entre les compétences en chinois simplifié et traditionnel_javascript" class="aBlack">Comment basculer rapidement entre le chinois traditionnel et le chinois simplifié avec JavaScript et l'astuce permettant aux sites Web de prendre en charge le basculement entre les compétences en chinois simplifié et traditionnel_javascript</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!</p></div><div class="footermid"><a href="http://m.php.cn/fr/about/us.html">À propos de nous</a><a href="http://m.php.cn/fr/about/disclaimer.html">Clause de non-responsabilité</a><a href="http://m.php.cn/fr/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>