Feed
Google+
Contact
XING
LinkedIn
Twitter
ICQ
meebo.com

BlogEngine.NET – Das Meta-Tag robots

by Roland Schumacher alias GENiALi 21. März 2010 -- 457 words  -- 15228 mal gelesen

klaus_b@.net hat in letzter Zeit einiges an Verbesserungen für die BlogEngine.NET in seinem Blog diskutiert und auch Code veröffentlicht. Da ich auch BlogEngine.NET einsetze und auch selber schraube machte mich das natürlich hellhörig. Einmal ging es um XML-RPC API die nicht ganz korrekt implementiert sind und einmal um den Einsatz des Meta-Tag robots. Und das mit dem Meta-Tag fand ich ganz faszinierend. Das wollte ich unbedingt einbauen.

Im Hinblick auf “Geld verdienen” mit dem Blog macht die Aussage durchaus sinn. Und das werde ich testen. Ich will nicht die Übersichtsseiten oder die Archiv im Index der Suchmaschinen haben sondern die Postings. So wie es aussieht kann das mit dem Meta-Tag robots gesteuert werden.

Allerdings wollte ich nur eine Datei anpassen müssen und nicht jede die irgend wie speziell gesteuert werden soll. Zuerst dachte ich an eine Extension für BlogEngine.NET. Allerdings gibt es kein sinnvolles Event auf das man reagieren könnte. Sobald eine Seite geöffnet wurde, die nichts mit Postings zu tun hat, wird das Post.Serving Event nicht mehr ausgelöst. Es gäbe aber noch ein Page.Serving Event. Page ist die Basisklasse von BlogEngine.NET. Leider ist die Implementation von Page.Serving eine Leiche. Das Event wird nie ausgelöst. Schade.

Also, was hat jedes Theme von BlogEngine.NET als Basis? Die site.master. Die wird immer aufgerufen. Egal was geöffnet wird. Somit kann das mit dem Meta-Tag schön zentral an einer Stelle abgewickelt werden.

Viel Code habe ich von der klaus_b@.NET Lösung genommen.

protected void Page_Load(object sender, EventArgs e)
    {
        SetRobotsMetaTag(sender);
    }

    private void SetRobotsMetaTag(object sender)
    {
        Page page = ((MasterPage) sender).Page;

        string[] noindexPages = new[] { "default.aspx", "archive.aspx", "contact.aspx", "search.aspx" };

        //Per default soll alles indexiert und verfolgt werden.
        string metaContent = "index, follow";

        foreach (string noindex in noindexPages)
        {
            if (page.Request.Path.ToLower().IndexOf(noindex) > -1)
            {
                //Es gibt aber ausnahmen die nicht indexert werden sollen.
                metaContent = "noindex, follow";
                break;
            }
        }

        HtmlMeta tag = null;

        foreach (Control ctrl in page.Header.Controls)
        {
            if (ctrl is HtmlMeta
                && ((HtmlMeta)ctrl).Name.ToLowerInvariant() == "robots")
            {
                tag = (HtmlMeta)ctrl;
                tag.Content = metaContent;
                break;
            }
        }

        if (tag == null)
        {
            var meta = new HtmlMeta();
            meta.Name = "robots";
            meta.Content = metaContent;

            page.Header.Controls.Add(meta);
        }
    }

In Zeile 10 werden die Seiten definiert die nicht indexiert werden sollen. Alle anderen werden indexiert und verfolgt.

Wenn neue Seiten definiert werden können die zentral erfasst werden.

Was noch wichtig ist, nicht das man das robots Meta-Tag mehr als einmal im Code hat. In den Einstellungen des Blogs können im HTML Head-Section Infos erfasst werden die im Header des HTML angezeigt werden. Das nutze ich rege für diverse Meta-Tags. Dort müsste das robots Meta-Tag entfernt werden. Sonst kommt es mehr als einmal im HTML Code. Was dann ein Bot damit macht ist mir nicht klar. Nimmt er das erste oder das letzte? Also einfach raus.

kick it on dotnet-kicks.de

Tags: , , , ,

Blog | Entwicklung

Kommentare (2) -

Conny
Conny Germany
12.09.2010 04:40:13 #

Ich hatte auch mal einen Blog der mit Blog Engine lief, aber bin dann auf Wordpress umgestiegen. Ich finde Wordpress ist etwas leichter zu handhaben, aber ist wahrscheinlich Ansichtssache.

Antwort

GENiALi
GENiALi Switzerland
12.09.2010 12:20:51 #

Ich arbeite auch nur mit BlogEngine.NET da ich Entwickler mit .NET Umfeld bin. BE ist mit .NET (C#) entwickelt. Deshalb nutze ich dieses Blog.

Antwort

Pingbacks and trackbacks (1)+

Kommentar schreiben

  Country flag

biuquote
  • Kommentar
  • Live Vorschau
Loading

Statistik

Gesamte Posts: 1018
Dieses Jahr: 0
Diesen Monat: 0
Diese Woche: 0
Kommentare: 922
Total Bewertungen: 84
Ø Bewertung: 4,37
Meisten Kommentare
Google+ ... (28)
Beste Ø Bewertung
Tryton - Teil 6 - Installation ... (5)
Meiste Bewertungen
Windows 7 und die ersten Erfah ... (5)

Buttons

Benutzerprofil von GENiALi connection speed test network connection Bloggeramt.de Slug.ch Blog Verzeichnis und Blog Webkatalog Schumacher Roland Seitwert Valid XHTML 1.0 Transitional