Il est facile d'ajouter des métadonnées du moteur de recherche à votre site Web ASP.NET Core, vous permettant de vous concentrer sur la rédaction du code que vous souhaitez écrire. Il fournit trois choses:
<meta> Vous n'avez plus à rechercher le format de chacun de ces protocoles séparés, ni à polluer votre HTML avec des tonnes de balises <meta> .
Il vous donne également la flexibilité de définir le comportement de la façon dont ces fichiers sont générés au moment de l'exécution. Ceci est utile car cela signifie que vous pouvez faire des choses telles que d'informer les robots de moteur de recherche pour ne pas faire de vos sites de développement et de mise en scène, mais leur permettre d'indexer la version de production, sans avoir à écrire et à maintenir trois fichiers distincts.
Ajoutez le package Winton.AspNetCore.Seo au fichier .csproj de votre projet ou installez à l'aide de Nuget Package Manager:
Install-Package Winton.AspNetCore.Seo Ajoutez des services requis dans ConfigureServices dans Startup.cs . Par exemple pour utiliser les paramètres Robots.txt par défaut et sans définir un plan du site:
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeoWithDefaultRobots ( ) ;
} Ajoutez le Taghelper de graphique ouvert approprié à vos fichiers HTML. Par exemple dans _Layout.cshtml :
@using System;
@using Winton.AspNetCore.Seo.HeaderMetadata.OpenGraph
@addTagHelper *, Winton.AspNetCore.Seo
<!DOCTYPE html >
< html >
< head >
< open-graph-article
audio =" @{ new Audio( " http: //example.com") }"
authors=" @{ new List<string> { " http: //example.com/choc13" } }"
description=" Test description "
images ="
@{
new List<Image>
{
new Image( " http: //example.com/img1.jpg") { SecureUrl = " https://example.com/img1.jpg " , Height = 250 },
new Image( "http://example.com/img2.jpg") { SecureUrl = " https://example.com/img2.jpg " , Height = 300, Width = 500 }
};
} "
published-time=" @{ DateTime.UtcNow } "
title =" Test "
>
</ open-graph-article >
</ head >
< body >
</ body >
</ html > Votre plan du site peut être défini de différentes manières lors de l'appel AddSeoWithDefaultRobots ou AddSeo :
Utilisation d'un délégué. Par exemple:
services . AddSeoWithDefaultRobots (
options => options . Urls = new List < SitemapUrlOptions >
{
new SitemapUrlOptions
{
Priority = 0.9M ,
RelativeUrl = " test "
}
} ) ; Ceci est utile lorsque vous souhaitez définir votre carte de site à l'aide du code et conserver les paramètres Robots.txt par défaut (voir ci-dessous pour plus de détails sur les options Robots.txt de personnalisation). Il existe également une version du délégué qui a accès à IWebHostEnvironment pour le moment où la configuration dépend de l'environnement.
De la config. Par exemple:
services . AddSeo ( _configuration ) ; Ceci est utile lorsque vous souhaitez mettre votre plan de site dans la configuration, tels que appsettings.json .
La configuration doit contenir une section avec la clé "Seo" , par exemple:
{
"Seo" : {
"Sitemap" : {
"Urls" : [
{
"Priority" : 0.9 ,
"RelativeUrl" : " /login "
},
{
"Priority" : 0.8 ,
"RelativeUrl" : " /about "
}
]
}
}
}Notez que cette méthode ne définit aucune option Robots.txt par défaut, vous devez donc également configurer les robots.txt selon votre application.
Le fichier robots.txt peut être configuré de la même manière que le plan du site. Si AddSeoWithDefaultRobots est appelé les options Robots.TXT par défaut seront utilisées qui applique la stratégie suivante:
Remarque: Il convient toujours de se rappeler que les bots malveillants peuvent simplement ignorer un fichier robots.txt, il ne doit donc pas être invoqué pour masquer les parties sensibles du site.
L'appel AddSeo vous permet plutôt de spécifier les options. Il existe plusieurs façons de spécifier:
Utilisation d'un délégué. Par exemple:
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeo (
options =>
{
options . RobotsTxt . AddSitemapUrl = false ;
options . RobotsTxt . UserAgentRecords = new List < UserAgentRecord >
{
new UserAgentRecord
{
Disallow = new List < string > { " /login " } ,
UserAgent = " bing "
}
} ;
} ) ;
} Ceci est utile lorsque vous souhaitez définir vos robots.txt à l'aide du code. Vous pouvez également configurer le plan du site dans le même délégué. Il existe également une version du délégué qui a accès à IWebHostEnvironment pour le moment où la configuration dépend de l'environnement.
De la config. Par exemple:
services . AddSeo ( _configuration ) ; Ceci est utile lorsque vous souhaitez définir les robots.txt dans config, tels que appsettings.json .
La configuration doit contenir une section avec la clé "Seo" , par exemple:
{
"Seo" : {
"RobotsTxt" : {
"AddSitemapUrl" : false ,
"UserAgentRecords" : [
{
"UserAgent" : " bing " ,
"Disallow" : [ " /login " ]
},
{
"UserAgent" : " google " ,
"Disallow" : [ " * " ]
}
]
}
}
}Vous devez également configurer le plan du site via la configuration si vous avez besoin d'un plan du site.
Les RobotsTxtOptions ont les propriétés suivantes:
AddSitemapUrl - Détermine si l'URL au site du site doit être incluse dans le fichier robots.txtUserAgentRecords - Une collection d'enregistrements d'agents utilisateur. Utilisez-le pour définir les parties du site que vous souhaitez que chaque robot particulier ignore. Vous pouvez définir un enregistrement à l'aide de l'agent utilisateur de joker pour appliquer les mêmes règles à tous les robots en utilisant * . Les aides de balise suivants sont disponibles à partir de cette bibliothèque lorsque l'instruction d'importation @addTagHelper *, Winton.AspNetCore.Seo est utilisée:
open-graph-articleopen-graph-bookopen-graph-profileopen-graph-websiteopen-graph-music-albumopen-graph-music-playlistopen-graph-music-radio-stationopen-graph-music-songopen-graph-video-episodeopen-graph-video-movieopen-graph-video-otheropen-graph-video-tv-show Afin d'attribuer certaines des propriétés qui ont des types définies par cette bibliothèque, telles que Audio et Image , vous devrez également ajouter @using Winton.AspNetCore.Seo.HeaderMetadata.OpenGraph en haut de votre fichier cshtml.
Démarrez votre site Web et vous devriez pouvoir voir les fichiers aux URL suivants dans un navigateur:
Il devrait également y avoir plusieurs balises <meta> dans la tête des pages HTML de votre site si vous avez ajouté des aides à balises graphiques ouvertes.
Tous les aides à balises graphiques ouvertes répertoriées ci-dessus étendent la classe OpenGraphTagHelper . Pour ajouter vos propres objets graphiques ouverts, vous pouvez également étendre cette classe. La classe de base s'occupera de transformer les propriétés de votre assistant de balise en balises de méta graphique ouverte correctes. Vous pouvez également affronter le Behvaiour de votre objet en utilisant l' OpenGraphPropertyAttribute et OpenGraphNamespaceAttribute dans cette bibliothèque. Voir ci-dessous pour des exemples.
Par défaut, l' OpenGraphTagHelper spécifie l'espace de noms og pour toutes les balises. Pour remplacer cela pour les propriétés sur tous les objets graphiques ouverts personnalisés, ajoutez simplement l' OpenGraphNamespaceAttribute à votre classe. Par exemple: [OpenGraphNamespaceAttribute("example", "http://example.com/ns#")] .
Vous trouverez ci-dessous un bref exemple d'une aide à étiquette graphique ouverte personnalisée:
[ OpenGraphNamespaceAttribute ( " baz " , " http://baz.com/ns# " ) ]
public sealed class OpenGraphFooTagHelper : OpenGraphTagHelper
{
public OpenGraphFooTagHelper ( )
: base ( " foo " ) // Call the base constructor with the og:type of the custom object
{
}
// Property will render as <meta content="value assigned" property="baz:bar">
public string Bar { get ; set ; }
// Property will render as <meta content="value assigned" property="baz:foo_bar"> for each entry
// The OpenGraphPropetyAttribute can be used to specify the property name explicitly
[ OpenGraphProperty ( Name = " foo_bar " ) ]
public IEnumerable < string > FooBars { get ; }
}Pour plus d'exemples, consultez le SRC pour la façon dont les objets graphiques ouverts fournis par cette bibliothèque ont été implémentés.