Donnerstag, 18. Februar 2010

SEO mit ASP.NET 3.0, Visual Studio 2008

Wie ja vielleicht viele wissen, wird es mit ASP.NET 4.0 und Visual Studio 2010 einige SEO-Erweiterungen geben. Nachzulesen zum Beispiel im MSDN Magazin im Artikel Search Engine Optimization with ASP.NET 4.0, Visual Studio 2010 and IIS7. Doch man muss nicht auf ASP.NET 4.0 warten, um seine Seiten für Suchmaschinen zu optimieren. Ich möchte hier nicht die üblichen statischen SEO Tipps - wie zum Beispiel Images mit Title und beschreibenden Alt-Tag bestücken, auf Keyword Density achten, usw. – beschreiben, sondern auf zwei effektive dynamische Methoden hinweisen.
Zum einem kann man durch URL Rewriting die normalerweisen kryptischen URL’s, wie z.B. show_album.aspx?ID=4711 zum Anzeigen eines speziellen Photoalbums, in die Suchmaschinen freundliche Schreibweise /Bilder_Lufthansa_Halbmarathon_Frankfurt ersetzen oder durch dynamisches Ergänzen der Metatags im Page_Load die entsprechenden Keywords in Abhängigkeit vom konkreten Inhalt versorgen.

SEO-Tip: URL-Rewriting

Für das URL-Rewriting gibt es normalerweise unzählige Tools, die einem das URL-Rewriting auf IIS-Ebene oder durch Erweiterungen wie URL Mapping (Tip/Trick: Url Rewriting with ASP.NET - ScottGu's Blog) ermöglichen. Doch es gibt auch einen sehr pragmatischen Ansatz, wenn man sich wieder auf die etwas verstaubte global.asax besinnt.
Hier kann man im Application_BeginRequest auf folgende Art und Weise prüfen, ob es sich bei der aktuellen URL, um eine optimierte URL (z.B. bilder_Lufthansa_halbmarathon) handelt. Dann aus dem extrahierten Titel die ID des Fotoalbums ermitteln und dann die eigentliche URL (z.B. PhotoAlbum_Contents_s.aspx?Albumid=4711) zusammenbauen. Durch die RewritePath-Methode wird dann der Request auf diese URL umgebogen.
void Application_BeginRequest(Object sender, EventArgs e)
{
string originalPath = HttpContext.Current.Request.Path.ToLower();
Regex rewrite_regexBilder = new Regex(@"bilder_((.+)\.aspx)", RegexOptions.IgnoreCase);
try
{
//see if we need to rewrite the URL
Match match_rewrite = rewrite_regexBilder.Match(originalPath);
if (match_rewrite.Success)
{
string[] cap1 = match_rewrite.Groups[0].Captures[0].ToString().Split('/');
string titleComp = "";
if (cap1.Length > 0)
titleComp = cap1[cap1.Length - 1];
else
titleComp = match_rewrite.Groups[0].Captures[0].ToString();
// Bilder_ abschneiden und .aspx abtrennen
string title = titleComp.Substring(7, titleComp.Length - 12).Replace("_", " ");
int albumid = lnAppFactory_P.getAlbumIDByTitle(title);
if (albumid != 0)
{
string newURL = originalPath.Replace(titleComp, "PhotoAlbum_Contents_s.aspx?Albumid=" + albumid.ToString());
Context.RewritePath(newURL, true);
}
}


SEO-Tip: Metatags dynamisch ergänzen

Um eine dynamische Seite mit den Keywords vom konkreten Inhalt zu füllen, kann man diese Keywords zunächst ermitteln. Dies kann man zum Beispiel dadurch lösen, das man in der Datenbanktabelle noch eine Zusatzspalte Keywords anlegt und diese dann über die entsprechende ID im Page_Load-Event ausliest. Danach muss man im Page-Load-Event nur noch die Metatags neu setzen:


HtmlMeta description = new HtmlMeta();
HtmlMeta keywords = new HtmlMeta();
Page.Title = sTitle;
keywords.Name = "Keywords";
description.Name = "Description";
description.Content = sDescription;
keywords.Content = sKeywords;
Page.Header.Controls.Add(keywords);
Page.Header.Controls.Add(description);

Keine Kommentare:

Kommentar veröffentlichen