Geschrieben von: Dario Nuevo
Kategorie: ASP Grundlagen
This printed page brought to you by AlphaSierraPapa
Wir alle wissen, daß Meta-Tags für eine gute Indexierung in den Suchmaschinen wichtig sind. Doch leider ist es so, daß man beim Erstellen einer Homepage nicht immer Zeit findet, bei jedem Dokument die Meta-Tags dementsprechend anzupassen. Aus diesem Grund möchte ich Ihnen mit diesem Artikel eine bequeme Art und Weise vorstellen, wie wirklich jedes Dokument in Ihrem Projekt die passenden Meta-Tags bekommt.
Realisieren werden wir dies mit einem Script, welches wir per Include in alle Dateien der Website einbauen werden. Dieses Script versorgt jede Datei beim Aufruf mit den jeweiligen Meta-Tags, welche wir vorher in eine Datenbank eingetragen haben. Die Identifizierung der Dateien erfolgt anhand der Umgebungsvariable PATH_INFO.
Unsere vordefinierten Meta-Tags befinden sich in der Tabelle tMeta der Access Datenbank meta.mdb, welche folgende Struktur aufweist:
Erläuterung der einzelnen Felder:
AutoID - Primary Key
fString - Name-Attribut des Meta-Tags (z.B. "robots", "keywords" usw.)
fDocument - Pfad des Dokuments, für welches der Meta-Tag bestimmt ist (PATH_INFO-Werte).
fValue-Content - Attribut des Meta-Tags (der eigentliche Inhalt, darum ein text/blob)
Website Struktur für das Artikelbeispiel: getmeta.asp und connection.asp sind im Webroot. veilchen.asp und arangata.asp befinden sich im Unterverzeichnis /blumen. meta.mdb liegt im Unterverzeichnis /MetaDB. Um die Datenbank leicht auf SQL-Server portieren zu können, befindet sich im Unterverzeichnis /MetaDB noch zusätzlich das SQL-Script meta.sql.
Die ASP Datei getmeta.asp enthält das Script, welches beim Aufruf einer Seite die Meta-Tags hineinschreibt. Zu diesem Zweck wird es in alle Dateien inkludiert. Vorzugsweise sollte die Datei im Rootverzeichnis der Website platziert werden, damit man es absolut inkludieren kann (also mit /getmeta.asp).
Die Parameter für die Datenbankverbindung enthält hier die connection.asp Datei:
<% Set Conn = Server.CreateObject("ADODB.Connection") Set objRSMeta = Server.CreateObject("ADODB.Recordset") Conn.Provider="Microsoft.Jet.OLEDB.4.0" Conn.Open Server.MapPath("/MetaDB/meta.mdb") %>
Und hier der Quelltext von getmeta.asp:
<% ' Server-Variable PATH_INFO reinholen File = Request.ServerVariables("PATH_INFO") ' DB-Abfrage, Auswahl von Meta-Tags zum aktuellen Dokument (anhand Variable File) Set objRSMeta = Conn.Execute("SELECT * FROM tMeta WHERE fDocument='" & File & _ "' ORDER BY fString ASC") While Not objRSMeta.EOF Response.Write "<meta name=""" & objRSMeta("fString") & """ content=""" & objRSMeta("fValue") & """>" & vbCrLf objRSMeta.MoveNext Wend ' Aufräumen Set objRSMeta = Nothing Conn.Close %>
Wie bereits erwähnt, identifizieren wir die Datei -welche die Meta-Tags anfordert- anhand der Server-Umgebungsvariable PATH_INFO. Diese Variable beinhaltet immer den vollen Pfad zum aktuellen Script inklusive dem Scriptnamen selbst. Im Dokument www.aspheute.com/beispiel/testemal.asp hätte PATH_INFO den Wert "/beispiel/testemal.asp". PATH_INFO ist also in jedem Dokument anders, was uns sehr dienlich ist.
Die Abfrage liefert uns alle Meta-Tags aus der Datenbank, welche dem aktuellen Dokument zugeteilt sind. Schlußendlich geben wir die Meta-Tags mit einer While-Schleife aus und räumen auf.
Haben wir getmeta.asp erstmal erstellt, können wir die Datei in jede Datei mit einer include Anweisung referenzieren. Der Aufwand ist sehr gering:
<!--#include virtual="/getmeta.asp" -->
Beachten Sie, daß Meta-Tags innerhalb des <head>-Bereiches eines Dokumentes stehen müssen. Folglich muß sich auch die include Anweisung dort befinden.
Theorie mochte ich nie gerne, am besten sieht man den Sinn immer in der Praxis. Hier ein konkretes Beispiel, wie das Ganze in einem produktiven Umfeld aussehen könnte.
Nehmen wir an, wir sind Webmaster von www.blumen-guide.org. Als Beispieldokument nehmen wir www.blumen-guide.org/blumen/veilchen.asp. Folgende Einträge befinden sich in der Tabelle tMeta der meta.mdb Datenbank:
Nun der Sourcecode für die veilchen.asp Datei im Originalzustand, wie sie auf dem Webserverunterverzeichnis /blumen abgelegt ist:
<html> <head> <!--#include virtual="/getmeta.asp"--> <title>Blumen Guide - Verzeichnis</title> </head> <body bgcolor="white"> <h1>Das Veilchen</h1> lorem ipsum lari fari.. </body> </html>
Beim Aufruf der Datei gibt nun getmeta.asp die Meta-Tags aus:
<html> <head> <meta name="robots" content="follow"> <meta name="keywords" content="Veilchen porträt informationen blumen"> <meta name="description" content="Mehr Informationen über Veilchen"> <title>Blumen Guide - Verzeichnis</title> </head> <body bgcolor="white"> <h1>Das Veilchen</h1> lorem ipsum lari fari... </body> </html>
Sie sehen also, auf diese Weise können wir alle Meta-Tags einer gesamten Website bequem in einer Datenbank verwalten. Der Vorteil dabei ist, daß der Besucher überhaupt nichts davon merkt. Auch für die Suchmaschinen ist das Resultat dasselbe, da auch sie immer die generierte Seite des Servers erhalten (inklusive den Meta-Tags). Diese Lösung stellt also einen kompletten und vollwertigen Ersatz für eine "manuelle" Meta-Tag-Indexierung dar.
Ein kleiner Tip am Rande: Wenn Sie schon getmeta.asp in jedes Dokument einbinden, so nutzen Sie dies doch auch für weitere Tags, welche in jedem Dokument erscheinen sollen. Denkbare Erweiterungen wären z.B. noch der Dokumenttitel, ein Copyright-Hinweis, welcher auf jeder Seite aufscheinen sollte usw. Natürlich ist damit noch viel mehr möglich, aber das überlasse ich Ihrem Ermessen.
This printed page brought to you by AlphaSierraPapa
Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20010620.zip
ADO und ASP - Datenbanken einmal näher betrachtet
http:/www.aspheute.com/artikel/19990825.htm
Auto-Generierung von performantem Abfragecode
http:/www.aspheute.com/artikel/20010329.htm
Die SQL ORDER BY Clause
http:/www.aspheute.com/artikel/20001201.htm
©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.