mobile Websites SEO per Sitemap

Ein recht junges Problem mobiler ASP.NET Websites ist die Indizierung durch Suchmaschinen wie BING oder Google. Persönlich mag ich den Begriff SEO (Search Engine Optimization) nicht, da er vorgaukelt, das man Websites für Google optimieren muss. Sollte man eigentlich nicht. Websites sollten optimal für den Benutzer sein. Der Job von Suchmaschinen wiederum ist es optimale Ergebnisse passend zu den Bedürfnissen des Users zu bringen.

In diesem Fall ist es aber anders. Parallel zu www.ppedv.at Website gibt es eine Site die fokussiert auf mobile Nutzung ist http://m.ppedv.at. Inhaltlich sehr unterschiedlich. Ruft man nun mit einem Browser die Website auf, sieht man quasi nichts. Auch der Spider (bot) der Suchmaschine sieht nichts und kann damit auch keinen Links folgen.

Laut google sollen mobile Sitemaps helfen. In den Webmaster Tools kann man sein Begehr schon mal anmelden.

image

Ich formulier das so, weil die Position und Verhalten von Google Königlich und ich Untertan (unterirdisch) bin.

In meinem Fall lasse ich nun so eine mobile Sitemap per Code generieren um immer aktuell zu sein. Entsprechende online und offline Sitemap Generatoren bieten das nicht.

Für die fixen Hyperlink wurde eine XML Vorlage angelegt. Darin kann man auch die XML Struktur gut herauslesen.

   1:  <?xml version="1.0" encoding="UTF-8"?>
   2:  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
   3:          xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0">
   4:    <url>
   5:      <loc>http://m.ppedv.at/</loc>
   6:      <lastmod>2013-05-14</lastmod>
   7:      <changefreq>monthly</changefreq>
   8:      <priority>0.5</priority>
   9:      <mobile:mobile/>
  10:    </url>
  11:    <url>
  12:      <loc>http://m.ppedv.at/S/11</loc>
  13:      <lastmod>2013-05-14</lastmod>
  14:      <changefreq>monthly</changefreq>
  15:      <priority>0.5</priority>
  16:      <mobile:mobile/>
  17:    </url>
  18:    <url>
  19:      <loc>http://m.ppedv.at/S/2,12,14,19</loc>
  20:      <lastmod>2013-05-14</lastmod>
  21:      <changefreq>monthly</changefreq>
  22:      <priority>0.5</priority>
  23:      <mobile:mobile/>
  24:    </url>
  25:    <url>
  26:      <loc>http://m.ppedv.at/S/5,6</loc>
  27:      <lastmod>2013-05-14</lastmod>
  28:      <changefreq>monthly</changefreq>
  29:      <priority>0.5</priority>
  30:      <mobile:mobile/>
  31:    </url>
  32:    <url>
  33:      <loc>http://m.ppedv.at/kontakt</loc>
  34:      <lastmod>2013-05-14</lastmod>
  35:      <changefreq>monthly</changefreq>
  36:      <priority>0.5</priority>
  37:      <mobile:mobile/>
  38:    </url>
  39:    <url>
  40:      <loc>http://m.ppedv.at/S/4,21</loc>
  41:      <lastmod>2013-05-14</lastmod>
  42:      <changefreq>monthly</changefreq>
  43:      <priority>0.5</priority>
  44:      <mobile:mobile/>
  45:    </url>
  46:  </urlset>

Dann werden per VB.NET und XML Literals ( eine wunderbare Funktion die es in C# nicht gibt) neue Nodes anhand einer Tabelle hinzugefügt. Das ganze in einer HTML entkernten ASPX Seite.

   1:  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   2:          Dim x As XDocument = XDocument.Load(Server.MapPath("~/app_data/sitemap.xml"))
   3:          x.AddAnnotation(SaveOptions.OmitDuplicateNamespaces)
   4:   
   5:   
   6:          Dim pp As ppcompanyEntities = New ppcompanyEntities
   7:         
   8:          Dim query = pp.SEMINARE.Where(Function(s) s.isActive )
   9:          For Each s In query
  10:              Dim n = <url>
  11:                          <loc>http://m.ppedv.at/d/<%= s.SEID %></loc>
  12:                          <lastmod><%= Date.Now.ToString("yyyy-MM-dd") %></lastmod>
  13:                          <changefreq>daily</changefreq>
  14:                          <priority>0.5</priority>
  15:                          <mobile:mobile/>
  16:                      </url>
  17:              x.<urlset>.First.Add(n)
  18:          Next
  19:   
  20:   
  21:          Response.Write(x.ToString)
  22:   
  23:   
  24:      End Sub

Allerdings sind im urlset zwei Namensräume deklariert. Um den Code (hier speziell mobile: ) überhaupt kompilieren zu können braucht es passende Imports.

   1:  Imports <xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0">
   2:  Imports <xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

Danach werden diese XML Namensräume sozusagen doppelt und mehrfach aber bei jedem URL Element eingefügt. Zeile 3 verhindert dieses wiederum.

Dann bleibt nur noch abzuwarten, wann königliche Hoheit, mein Gnadenersuch um wohlwollende Aufnahme in den Index auch erhört.

Wer das komplette XML File benötigt, kann es natürlich unter http://m.ppedv.at/sitemap.xml abrufen.

Kommentare sind geschlossen