Das ProblemWer möchte nicht ganz weit oben stehen? Tipps und Tricks zu Suchmaschinenoptimierung gibt es viele, die meisten sind auf der HTML-Ebene. Was man in ASP.NET tun kann, ist die Vermeidung von URL-Parametern in Webseiten. Seitenadressen wie http://www.dotnetframework.de/glossar/3777/LINQ.aspx wird den meisten Suchmaschinen bei der Suche nach "LINQ" besser angesehen als http://www.dotnetframework.de/glossar/details.aspx?id=3777. Die LösungNatürlich wäre es Unsinn, von genau so viele Webseiten anzulegen wie es Datenbankeinträge gibt. Der Trick besteht darin, in dem globalen Application_BeginRequest-Ereignis in der global.asax die Aufrufe nach den fiktiven Seiten abzufangen und an die parametrisierten Seiten weiterzugeben. Dann kann man die Links auf die Seite auf die vorgetäuschten Adressen setzen. Diese "Vortäuschung" ist nicht verboten, weil sie damit ja nicht mehr Seiten als die tatsächlich haben erzeugen, sondern nur die URL vereinfachen. Innerhalb von Application_BeginRequest findet man üblicherweise drei Schritte:
Dieses Verfahren kann man übrigens auch einsetzen, wenn sich Seitenadressen im Zuge der Restrukturierung einer Website geändert haben. CodeCS:
protected void Application_BeginRequest(object sender, EventArgs e)
{
// Regulärer Ausdruck
System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex("([0-9][0-9][0-9][0-9])");
// Match gegen vorletztes Segment der URL ausführen
System.Text.RegularExpressions.Match m = re.Match(Request.Url.Segments[Request.Url.Segments.Length - 2]);
// Wenn Match erfolgreich...
if (m.Success)
{
// Zahl extrahieren
long ID = Convert.ToInt64(m.Captures[0].Value);
// Umlenken
Context.RewritePath("~/Detailseite.aspx", "", "id=" + ID.ToString(), true);
}
}
VB:
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
' Regulärer Ausdruck
Dim re As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex_
("(?<ID>[0-9][0-9][0-9][0-9])(.aspx)", RegexOptions.IgnoreCase)
' Match gegen vorletztes Segment der URL ausführen
Dim m As System.Text.RegularExpressions.Match = re.Match(Request.Url.Segments(Request.Url.Segments.Length - 1))
' Wenn Match erfolgreich...
If m.Success Then
' Zahl extrahieren
Dim ID As Long = Convert.ToInt64(m.Groups("ID").Captures(0).Value)
' Umlenken
Context.RewritePath("~/CS/Detailseite.aspx", "", "id=" & ID.ToString(), True)
End If
End Sub
|