Es erleichtert einfach, Suchmaschinenmetadaten zu Ihrer ASP.NET Core -Website hinzuzufügen, sodass Sie sich auf das Schreiben des Codes, den Sie schreiben möchten, konzentrieren können. Es liefert drei Dinge:
<meta> tags Sie müssen nicht mehr das Format jedes dieser getrennten Protokolle nachschlagen oder Ihre HTML mit Tonnen von <meta> -Tags verschmutzen.
Es gibt Ihnen auch die Flexibilität, das Verhalten zu definieren, wie diese Dateien zur Laufzeit generiert werden. Dies ist nützlich, da Sie Dinge wie die Information von Suchmaschinenbots tun können, um Ihre Entwicklungs- und Staging -Websites nicht zu kriechen, sondern die Produktionsversion indexieren, ohne drei separate Dateien schreiben und verwalten zu müssen.
Fügen Sie das Paket Winton.AspNetCore.Seo in die .csproj -Datei Ihres Projekts oder zur Installation mit Nuget Package Manager hinzu:
Install-Package Winton.AspNetCore.Seo Fügen Sie die erforderlichen Dienste in ConfigureServices in Startup.cs hinzu. Zum Beispiel die Standardeinstellungen von Robots.txt und ohne Sitemap zu verwenden:
public void ConfigureServices ( IServiceCollection services )
{
services . AddSeoWithDefaultRobots ( ) ;
} Fügen Sie Ihren HTML -Dateien den entsprechenden offenen Graph -Taghelper hinzu. Zum Beispiel in _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 > Ihre Sitemap kann auf verschiedene Arten definiert werden, wenn Sie entweder AddSeoWithDefaultRobots oder AddSeo aufrufen:
Mit einem Delegierten. Zum Beispiel:
services . AddSeoWithDefaultRobots (
options => options . Urls = new List < SitemapUrlOptions >
{
new SitemapUrlOptions
{
Priority = 0.9M ,
RelativeUrl = " test "
}
} ) ; Dies ist nützlich, wenn Sie Ihre Site -Karte mithilfe von Code definieren und die Standardeinstellungen von Robots.txt beibehalten möchten (finden Sie unten weitere Informationen zum Anpassen von Robots.txt -Optionen). Es gibt auch eine Version des Delegierten, die Zugriff auf IWebHostEnvironment hat, wenn die Konfiguration von der Umgebung abhängt.
Aus Konfiguration. Zum Beispiel:
services . AddSeo ( _configuration ) ; Dies ist nützlich, wenn Sie Ihre Sitemap in eine Konfiguration einfügen möchten, wie z. appsettings.json .
Die Konfiguration muss einen Abschnitt mit dem Schlüssel "Seo" enthalten, zum Beispiel:
{
"Seo" : {
"Sitemap" : {
"Urls" : [
{
"Priority" : 0.9 ,
"RelativeUrl" : " /login "
},
{
"Priority" : 0.8 ,
"RelativeUrl" : " /about "
}
]
}
}
}Beachten Sie, dass diese Methode keine Standardoptionen von Robots.txt festgelegt hat. Sie müssen daher auch den von Ihrer Anwendung erforderlichen Robots.txt konfigurieren.
Die Datei robots.txt kann auf die gleiche Weise wie die Sitemap konfiguriert werden. Wenn AddSeoWithDefaultRobots als Standard -Robots -Optionen bezeichnet wird, wird die folgende Richtlinie angewendet:
Hinweis: Es ist immer wert, sich daran zu erinnern, dass böswillige Bots nur eine Robots.txt -Datei ignorieren können, sodass sie nicht darauf angewiesen werden sollten, sensible Teile der Website zu verbergen.
Durch das Aufrufen AddSeo können Sie stattdessen die Optionen angeben. Es gibt verschiedene Möglichkeiten, wie sie angegeben werden können:
Mit einem Delegierten. Zum Beispiel:
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 "
}
} ;
} ) ;
} Dies ist nützlich, wenn Sie Ihre The Robots.txt mit Code definieren möchten. Sie können die Sitemap auch im selben Delegierten konfigurieren. Es gibt auch eine Version des Delegierten, die Zugriff auf IWebHostEnvironment hat, wenn die Konfiguration von der Umgebung abhängt.
Aus Konfiguration. Zum Beispiel:
services . AddSeo ( _configuration ) ; Dies ist nützlich, wenn Sie den Robots.txt in config definieren möchten, z. B. appsettings.json .
Die Konfiguration muss einen Abschnitt mit dem Schlüssel "Seo" enthalten, zum Beispiel:
{
"Seo" : {
"RobotsTxt" : {
"AddSitemapUrl" : false ,
"UserAgentRecords" : [
{
"UserAgent" : " bing " ,
"Disallow" : [ " /login " ]
},
{
"UserAgent" : " google " ,
"Disallow" : [ " * " ]
}
]
}
}
}Sie sollten auch die Sitemap über die Konfiguration konfigurieren, wenn Sie eine Sitemap benötigen.
Die RobotsTxtOptions haben die folgenden Eigenschaften:
AddSitemapUrl - Bestimmt, ob die URL zur Sitemap in der Datei robots.txt enthalten sein sollteUserAgentRecords - Eine Sammlung von User Agent Records. Verwenden Sie dies, um die Teile der Site zu definieren, die jeder bestimmte Roboter ignorieren soll. Sie können einen Datensatz mit dem Wildcard -Benutzeragenten definieren, um die gleichen Regeln auf alle Roboter anzuwenden, indem Sie * verwenden. Die folgenden Tag -Helpers sind in dieser Bibliothek erhältlich, wenn die @addTagHelper *, Winton.AspNetCore.Seo Import -Anweisung verwendet wird:
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 Um einige der Eigenschaften zuzuweisen, die von dieser Bibliothek definierten Typen wie Audio und Image definiert sind, müssen Sie auch @using Winton.AspNetCore.Seo.HeaderMetadata.OpenGraph oben in Ihrer CSHTML -Datei hinzufügen.
Starten Sie Ihre Website und Sie sollten die Dateien in den folgenden URLs in einem Browser sehen können:
Es sollte auch mehrere <meta> -Tags im Kopf der HTML -Seiten Ihrer Website geben, wenn Sie offene Helfer für offene Diagramme hinzugefügt haben.
Alle oben aufgeführten Open -Graph -Tag -Helfer erweitern die OpenGraphTagHelper -Klasse. Um Ihre eigenen offenen Graphobjekte hinzuzufügen, können Sie diese Klasse auch erweitern. Die Basisklasse kümmert sich darum, die Eigenschaften in Ihrem Tag -Helfer in die richtigen Meta -Tags der offenen Grafik zu verwandeln. Sie können auch die BEHVAiOUR Ihres Objekts einstellen, indem Sie in dieser Bibliothek die OpenGraphPropertyAttribute und OpenGraphNamespaceAttribute verwenden. Beispiele finden Sie unten.
Standardmäßig gibt der OpenGraphTagHelper den og -Namespace für alle Tags an. Um dies für Eigenschaften für benutzerdefinierte Open -Graph -Objekte zu überschreiben, fügen Sie Ihrer Klasse einfach die OpenGraphNamespaceAttribute hinzu. Zum Beispiel: [OpenGraphNamespaceAttribute("example", "http://example.com/ns#")] .
Unten finden Sie ein kurzes Beispiel für einen benutzerdefinierten offenen Graph -Tag -Helfer:
[ 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 ; }
}Weitere Beispiele finden Sie in der SRC, wie die von dieser Bibliothek bereitgestellten offenen Graphobjekte implementiert wurden.