Wenn Seiten, auf die durch verschiedene Links verwiesen wird, häufig den gleichen Inhalt haben, spricht man von „duplicate content“. Wenn eine Website viele wiederholte Inhalte aufweist, gehen Suchmaschinen davon aus, dass der Wert der Website nicht hoch ist. Daher sollten wir versuchen, alle Arten von doppelten Inhalten zu vermeiden.
Doppelte Inhalte auf dynamischen Websites werden häufig durch URL-Parameter verursacht, und das Umschreiben von URLs verschlimmert dieses Phänomen (was ziemlich faszinierend ist, haha). Denn wenn die ursprünglichen URL-Parameter verwendet werden, kann die Suchmaschine entsprechende Urteile fällen und feststellen, dass der doppelte Inhalt durch URL-Parameter verursacht wird. Durch das Umschreiben der URL werden die URL-Parameter automatisch verdeckt, was dazu führt, dass die Suchmaschinen dies tun URL-Parameter werden nicht erkannt. Zum Beispiel:
Original-URL:
http://www.freeflying.com/articles.aspx?id=231&catelog=blog
http://www.freeflying.com/articles.aspx?id=231&catelog=news
URL nach URL-Umschreibung:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
Der Inhalt der Seiten, auf die diese URLs verweisen, ist tatsächlich derselbe, bei beiden handelt es sich um den Artikel mit der ID=231, aber auf diesen Artikel verweisen die Blog- und News-Spalten. Aus verschiedenen Gründen ist unsere endgültige URL immer noch wie oben gezeigt.
Es gibt zwei Möglichkeiten, damit umzugehen. Eine besteht darin, das Roboterprotokoll zu verwenden, um eine davon auszuschließen, und die andere darin, eine der URLs dauerhaft über 301 auf eine andere URL umzuleiten.
Heute werden wir zunächst über das Roboterprotokoll sprechen. Vereinfacht ausgedrückt bezieht sich Roboter auf eine Suchmaschine. Bei Google nennen wir es auch eine „Spinne“. Spinnen sind sehr höflich und fragen Sie zuerst nach Ihrer Meinung, bevor sie Ihre Webinhalte crawlen. Sie und der Roboter haben bereits zuvor auf Grundlage des Roboterprotokolls kommuniziert. Spezifisch für die Implementierung gibt es zwei Möglichkeiten:
1. Fügen Sie einen robots.txt-Text zum Stammverzeichnis der Website hinzu, z. B.:
#statischer Inhalt, alle Seiten im Ordner „Admin“ verbieten
Benutzeragent: *
Nicht zulassen: /Admin
Die #-Zeile gibt einen Kommentar an;
User-Agent bezieht sich auf die Suchmaschine. * bedeutet für alle Suchmaschinen, dass Sie auch eine bestimmte Suchmaschine angeben können, z. B. User-Agent: googlebot;
Disallow gibt Verzeichnisse oder Seiten an, auf die nicht zugegriffen werden darf. Hinweis: 1. Bei diesem Text muss die Groß-/Kleinschreibung beachtet werden. 2. Er muss mit „“ beginnen und das Stammverzeichnis der Website angeben.
Wie der Zweck dieser Serie konzentrieren wir uns auf die ASP.NET-Technologie. Weitere Hinweise zum robots.txt-Text finden Sie unter http://www.googlechinawebmaster.com/2008/03/robotstxt.html
Aber wie generieren wir diese Datei dynamisch (hierfür gibt es tatsächlich einige Anforderungen)? Vielleicht denken wir sofort an E/A-Operationen, das Schreiben einer TXT-Datei in das Stammverzeichnis ..., aber es gibt tatsächlich eine andere Möglichkeit: Bei Verwendung eines allgemeinen Verarbeitungsprogramms (.ashx-Datei) lautet der Code wie folgt:
Code
<%@ WebHandler Language="C#" Class="Handler" %>
Verwenden des Systems;
mit System.Web;
öffentlicher Klassenhandler: IHttpHandler {
public void ProcessRequest (HttpContext-Kontext) {
HttpResponse-Antwort = context.Response;
Antwort.Clear();
//response.ContentType = "text/plain"; Wenn Sie IE6 zum Anzeigen der Seite verwenden möchten, können Sie diese Aussage aus unbekannten Gründen nicht treffen.
// Die folgenden zwei Sätze sollten bei tatsächlicher Verwendung von der Datenbank dynamisch generiert werden.
Response.Write("User-agent: * n");
Response.Write("Disallow: /news/231.html n");
//Beziehen Sie sich auf den Inhalt einer statischen Robots-Datei, in der geschützte Inhalte gespeichert werden, die sich nicht ändern.
Response.WriteFile("~/static-robots.txt");
Antwort.Flush();
}
öffentlicher bool IsReusable {
erhalten {
return false;
}
}
}
Im Allgemeinen implementiert der Handler IHttpHandler. Im vorherigen Abschnitt „UrlRewrite“ haben wir über HttpModule gesprochen. Tatsächlich gibt es im ASP.NET-Anwendungslebenszyklus ein Konzept namens „Pipeline“: Eine HTTP-Anfrage durchläuft eine „Filterung“. /processing“ von HttpModule, das schließlich den „Prozessor“-Teil eines HttpHandle erreicht. HttpModule und HttpHandle bilden eine „Pipeline“.
Wenn Sie damit nicht vertraut sind, überprüfen Sie den Quellcode von Page. Sie werden feststellen, dass Page auch IHttpHandler implementiert, sodass *.aspx-Dateien die am häufigsten verwendeten HttpHandle sind. Aber Page ist nicht nur ein HttpHandler, sondern bettet auch komplexe Seitenlebenszyklusereignisse ein. Unter dem Gesichtspunkt der Ressourceneinsparung kann ich daher oft auch eine benutzerdefinierte, leichtere *.ashx-Datei () verwenden, um einige einfache Aufgaben zu erledigen. Ähnlich wie bei der Generierung einer TXT-Datei können wir auch Verifizierungscodes (JPG-Dateien), XML-Dateien usw. generieren.
Dann müssen Sie als Nächstes URLRewrite ausführen:
Code
void Application_BeginRequest(object sender, EventArgs e)
{
// Code, der beim Anwendungsstart ausgeführt wird
HttpContext context = HttpContext.Current;
string currentLocation = context.Request.Url.LocalPath;
if (currentLocation.ToLower() == "/website1/robots.txt")
{
context.RewritePath("~/Handler.ashx");
}
}
Auf diese Weise geht der Spider davon aus, dass sich tatsächlich eine robots.txt-Datei im Stammverzeichnis der Website befindet.
2. Fügen Sie das META-Tag zu der Seite hinzu, die blockiert werden muss.
<meta id="meta" name="robots" content="noindex,nofollow" />
noindex bedeutet, dass die Seite nicht indiziert werden kann
nofollow bedeutet, dass der Seite nicht „gefolgt“ werden kann (wird im SEO Hack ausführlich erklärt)
Dies ist der Effekt einer statischen Seite. Wenn Sie sie dynamisch generieren müssen, ist es ganz einfach:
Code
protected void Page_Load(object sender, EventArgs e)
{
HtmlMeta meta = new HtmlMeta();
meta.Name = "Roboter";
meta.Content = "noindex,nofollow";
this.Header.Controls.Add(meta);
}
Beschreibung, Schlüsselwort usw. können ebenfalls in Meta angegeben werden, die technische Umsetzung ist dieselbe.
Wie wählen wir also zwischen den beiden Methoden? Einige meiner Vorschläge:
1. Versuchen Sie, robots.txt zu verwenden, was die Auslastung der Website verringern kann (obwohl es sehr klein ist, haha), da der Spider nach dem Anzeigen der robots.txt-Datei keine blockierten verwandten Seiten mehr anfordert Wenn Sie die Meta-Methode verwenden, muss der Spider zuerst die Seite anfordern und dann entscheiden, sie nicht abzurufen. Zu diesem Zeitpunkt wurde die HTTP-Anfrage gesendet und es wurden außerdem zu viele Ressourcen auf der Serverseite verschwendet Wird Meta blockiert, führt dies auch dazu, dass der Spider den Eindruck der Website beeinträchtigt und den Abruf und die Einbindung der Website verringert oder abbricht.
2. Der Abgleich des robots.txt-Textes erfolgt von links nach rechts, daher gibt es hier keinen regulären Abgleich! Manchmal müssen wir also die Meta-Methode verwenden. Wie zum Beispiel die URL am Anfang unseres Artikels:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
Abschließend noch einige Anmerkungen:
1. Verwenden Sie nicht auf allen Seiten das gleiche Schlüsselwort und die gleiche Beschreibung. Obwohl es sich bei „articles.aspx“ um eine Seite handelt, werden daraus Tausende von Seiten auf der Seite, dann haben Tausende von Seiten das gleiche Schlüsselwort und die gleiche Beschreibung!
2. Vermeiden Sie die Verwendung einer URL-basierten SessionID. Wenn ASP.NET Cookies auf dem Client deaktiviert, können Sie eine URL-basierte SessionID mit einem ähnlichen Effekt einrichten:
http://www.freeflying.com/(S(c3hvob55wirrndfd564))/articles.aspx