Donnerstag, 4. Dezember 2008

entwickler.com Magazine Konferenzen Entwickler Akademie Entwickler-Forum Jobbörse Bücher
Software & Support Verlag




April 2006
aus Linux Enterprise Ausgabe: 12.2003
Umzugs-Service
Suchmaschinenoptimierung - Teil II
von Philipp von der Born und Christian Engelke

Im zweiten Teil unseres Artikels werden wir einige theoretische Grundlagen liefern und dann ein weiteres kleines PHP-Projekt entwickeln. Dieses Projekt kann von jedermann genutzt werden. Der Einsatz einer Datenbank ist hierzu nicht notwendig. Entwickeln Sie Ihre eigene auf unserer projektbasierenden Lösung.


Übersicht
Nachdem im ersten Teil des Artikels die wichtigsten Grundlagen sowie ein Praxisbeispiel erarbeitet wurden, wollen wir im zweiten Teil dieses Artikels anfangs wieder auf grundlegende Faktoren der Suchmaschinenoptierung (Domain-Umzüge) eingehen. Anschließend programmieren wir gemeinsam eine kleine PHP-Anwendung. Hierbei handelt es sich um einen einfachen contentPage-Generator, mit dem Sie Ihre neuen contentPages on the fly online erzeugen können. Das Script sorgt dafür, dass die angelegten Seiten automatisch mit den anderen Seiten der Website verlinkt werden. Im Laufe des Artikels weisen wir auf interessante Möglichkeiten der Weiterentwicklung hin, sodass Sie die Möglichkeit haben, eine eigens an Ihre Bedürfnisse angepasste Lösung zu entwickeln.

Domain-Umzüge
Domain-Umzüge bzw. Strukturänderungen der Internet-Seite sind immer dann ärgerlich, wenn die entsprechende Domain/Webseite bereits Top-Platzierungen bei Suchmaschinen erzielt hat. Das bevorstehende Problem ist, die neuen Seiten möglichst schnell wieder in den Index der Suchmaschinen hineinzubekommen und gute Platzierungen zu erzielen.

Die effektivste Lösung ist in diesem Fall eine direkte HTTP-Weiterleitung über die .htaccess-Datei. In einem Beispiel haben wir auf einer Domain ein Verzeichnis namens files. Nun möchten wir gern alle Aufrufe in diesem Verzeichnis, auf ein Verzeichnis files unserer neuen Domain umleiten. Die .htaccess wird um folgende Zeile erweitert.

Redirect 301 /files http://www.neue-domain.de/files

Sie können auch aus allen einzelnen Dateien eine direkte Weiterleitung vornehmen. Dies funktioniert mittels einer einfachen Header Location. Sofern Sie PHP-Dateien verwenden, können Sie folgende Lösung verwenden. Achten Sie darauf, dass Sie vor dem header-Befehl keine Zeichen (auch kein Leerzeichen) aus dem Bildschirm ausgeben!

<?
header ("Location: http://www.neue-domain.de/datei.html");
?>

In einigen Fällen ist es sinnvoll in der 404-Datei eine bestimmte Weiterleitung durchzuführen. Hierbei ist es notwendig zu wissen, welche Seite den 404-Aufruf verursacht. Genau das verrät Ihnen die Umgebungsvariable $REQUEST_URI. Besonders bei Strukturänderungen können Sie anhand der angegebenen Umgebungsvariablen direkt in der 404-Datei nach einer Datei suchen, die für den Besucher als Nächstes in Frage kommen könnte (dieses geht bei Strukturänderungen direkt auf der Website) und diesen dann dahin leiten. Ein Beispiel für eine 404-Weiterleitung sehen Sie in Listing 1.

Listing 1

<?
// Diese Datei existiert nicht
$searchfile = substr($REQUEST_URI,1);

// Alles nach dem Fragezeichen abschneiden (falls da Parameter sind)
$pos = strpos($searchfile, "?");
if ($pos === false)
{
// Keine Parameter vorhanden
}
else
{
// Parameter abschneiden
$searchfile = substr($searchfile,0,$pos);
}


// Wenn ich bei einer Datei genau weiß, wo die neue Datei ist, dann
// direkt umleiten
if ($searchfile == "eineDatei.php)
{
$go = "http://www.neue-domain.de/eineDatei.php";
header ("Location: $go");
}

// Nach einer Datei suchen
if (file_exists("prefix_".$searchfile) == TRUE)
{
$go = "prefix_".$searchfile;
header ("Location: $go");
}


// hier sonst die normale 404 weiterbauen
// irgendwas muss ja angezeigt werden, wenn keine
// Weiterleitung stattfindet

?><br></br><br></br>Benutzen Sie für diese Aufgabe möglichst keine Javascript-Weiterleitung. Ihre Besucher würden natürlich sofort auf die neue Seite kommen, allerdings würde es Ihnen selbst nicht helfen, die neuen Seiten schnell wieder in die Suchmaschinen zu bekommen.

Achten Sie beim Domain-Umzug darauf, dass Ihre Seiten wieder alle wichtigen suchmaschinenkonformen Eigenschaften besitzen und auch Inbound-Links fremde Seiten haben (fremde Seiten linken auf Sie).

Das Praxisbeispiel
Die Programmierung des contentPage-Generators ist recht einfach gestaltet. Das Programm basiert ebenso wie das Script in unserem letzten Artikel auf einem Template, welches dem Design Ihrer Website angepasst werden sollte. In dem Template arbeiten wir mit Konstanten, die als Platzhalter für die Überschrift, Verlinkungen, Inhalte stehen.

Die Konstanten werden anschließend im Script durch die vom Benutzer eingegeben Daten ersetzt und eine neue contentPage wird angelegt. In einer weiteren Datei werden alle angelegten Seiten gespeichert, sodass diese automatisch von der Startseite mit eingebunden werden können.

Die Umsetzung
Im ersten Schritt erzeugen wir ein einfaches HTML-Formular. In Tabelle 1 finden Sie die von uns genutzten Felder samt Beschreibungen. In unserem Beispiel kommen wir mit diesen Feldern aus. Sie sollten bei der Entwicklung Ihrer eigenen Lösung selbst entscheiden, ob Sie unsere Vorgabe verwenden oder eine eigene Auswahl an Feldern treffen möchten. In dem Text Ihrer contentPages sollten die Begriffe, unter denen Ihre Seite gefunden werden soll, auf jeden Fall gelistet werden. Der Submit-Button des Formulars verlinkt auf die write.php, die in Listing 2 erstellt wird.

Listing 2

<?
// template in ein array laden
$content = file("template.htm");

// Daten lesen und Variablen speichern
if ($FILENAME == "")
{
echo "Ohne Namen keine Datei!";
exit;
}

// Daten zuweisen
$filename = $FILENAME;
$title1 = $TITLE1;
$title2 = $TITLE2;
$link = $LINK;
$words = $WORDS;
$description = $DESCRIPTION;

Zuerst wird die Template-Datei in ein Array gelesen. Anschließend wird überprüft, ob für die zu erstellende contentPage ein Dateiname eingegeben wurde. Ist dies nicht der Fall, wird das Script sofort abgebrochen. Andernfalls werden die Variablen aus dem Formular an die Variablen im Script übergeben. Es wäre theoretisch auch denkbar, direkt mit den Variablen aus dem Formular zu arbeiten.

Im Weiteren werden die weiterführenden Links in einer Variablen gespeichert. Sicherlich werden Sie nicht immer alle vier Felder mit weiterführenden Links füllen, daher muss darauf geachtet werden, dass auch nur tatsächlich ausgefüllte Felder berücksichtigt werden. (Siehe Listing 3.)

Listing 3

// Links ermitteln
$links = "";

if ($KEY1 != "" && $LINK1 != "")
$links .= "<a href='$LINK1'>$KEY1</a><br>";

if ($KEY2 != "" && $LINK2 != "")
$links .= "<a href='$LINK2'>$KEY2</a><br>";

if ($KEY3 != "" && $LINK3 != "")
$links .= "<a href='$LINK3'>$KEY3</a><br>";

if ($KEY4 != "" && $LINK4 != "")
$links .= "<a href='$LINK4'>$KEY4</a><br>";

In der Variablen Links stehen uns nun alle Links zur Verfügung. Im folgenden und wichtigsten Schritt werden die Konstanten aus dem Template, welche sich jetzt im Array $content befinden, durch den entsprechenden Inhalt ersetzt (siehe Listing 4).

Listing 4

$content = str_replace("TITLE1","$title1",$content);
$content = str_replace("TITLE2","$title2",$content);
$content = str_replace("LINKS","$links",$content);
$content = str_replace("LINK","$link",$content);
$content = str_replace("WORDS","$words",$content);
$content = str_replace("DESCRIPTION","$description",$content);

Das Ersetzen der Konstanten erfolgt mit der PHP-Funktion str_replace. Der erste Parameter gibt die Konstante an, die ersetzt werden soll. Der zweite Parameter enthält den zu übersetzenden Wert. Im dritten Parameter wird die Quelle angegeben, aus der der Vorgang gestartet werden soll. Nachdem wir in dem Array jetzt unsere neue contentPage haben, muss diese nur noch gespeichert werden (siehe Listing 5).

Listing 5

$fp = fopen($filename, "w+");

for($i=0; $i < count($content); $i++)
{
// Nächste zu schreibende Zeile lesen
$next_line = $content[$i];

// Zuletzt die Zeile in die Datei schreiben
fwrite($fp, "$next_line\n");
}

fclose($fp);
chmod ($FILENAME, 0777);

In einer for-Schleife wird jede einzelne Zeile des Arrays ausgelesen und in die neue Datei geschrieben. Zuletzt wird die Datei geschlossen und mit den jeweiligen Dateirechten ausgestattet. Da alle angelegten contentPages in einer weiteren Datei gespeichert werden, muss noch folgender Schritt ausgeführt werden.

$fp2 = fopen("sites.php", "a+");
fwrite($fp2, "<a href='$LINK'>$KEYWORD</a><br>\n");
fclose($fp2);
?>

Die sites.php können wir jetzt auf unseren Seiten includen und würden damit automatisch auf alle angelegten contentPages verlinken, sodass die Suchmaschinen diese finden können. Damit die contentPage zum Design Ihrer Website passt, müssen Sie das Template entsprechend umstrukturieren. Das Design sollte angepasst werden, damit Ihr Besucher das subjektiv gute Gefühl bekommt, sich einen qualitativ hochwertigen Inhalt Ihrer Webseite anzuschauen (was der Fall sein sollte).

Was könnte verbessert werden?
Unser Praxisbeispiel soll in keinem Fall eine perfekte, sofort einsetzbare Lösung darstellen. Vielmehr geht es darum, einen Lösungsansatz für eine individuelle von Ihnen selbst entwickelte Lösung zu liefern. Es gibt viele Möglichkeiten, das Script zu verbessern und auf individuelle Zwecke anzupassen.

Wir gehen davon aus, dass Sie auf Ihren Seiten neben Produkten, Dienstleistungen und News auch viele weitere Informationen anbieten werden. Daher wäre es unter Umständen angebracht, individuelle Templates für die einzelnen Bereiche anzulegen. Im HTML-Formular könnte man dann durch eine Checkbox oder durch ein Dropdown-Menü das jeweilige Template auswählen.

Sofern Sie die Absicht haben, eine große Anzahl von contentPages zu generieren, würde es wenig Sinn machen, alle contentPages untereinander irgendwo auf Ihrer Website zu includen. Es wäre denkbar, die contentPages in einzelne Bereiche zu unterteilen und für jeden Bereich eine eigene Link-Datei (sites.php) anzulegen. Jetzt wird nur noch aus bestimmten Bereichen auf die contentPages verlinkt. Der Einsatz eines Sitemap wäre für die Aufgabe auch eine gute Möglichkeit.

Ihre contentPages sind dann perfekt, wenn es für den Besucher nicht zu unterscheiden ist, ob er sich auf einer contentPage oder Ihrer tatsächlichen Webseite befindet. Das sollte Ihr Ziel sein. Halten Sie sich nicht unbedingt an unsere Vorgaben. Machen Sie das, was Sie für richtig halten. Passen Sie lediglich auf, dass Sie mit den Verlinkungen und der Wortdichte nicht übertreiben. Suchmaschinen werden Extreme als Spam werten und entsprechend abstrafen. Bauen Sie Metatags in das Template ein. Auch wenn nicht mehr alle Suchmaschinen Metatags beachten, wird es sicherlich nicht schaden. Wir können daher keine Haftung für die von uns beschriebenen Vorhergehensweisen übernehmen. Schützen Sie das Script am besten in einem passwortgesicherten Ordner auf Ihrem Webserver vor fremden Zugriff.

Zusammenfassung
Wer mit einer Internet-Präsenz Erfolg haben möchte (Besucher kaufen Produkte oder treten in Dialog mit dem Betreiber der Seite), sollte möglichst viele qualitative Besucher (Besucher, welche sich für Ihre Inhalte interessieren) auf der eigenen Seite haben. Nicht nur die Präsenz und die Quantität von contentPages sind wichtig. Eine ebenso große Bedeutung sollte der Qualität der Inhalte sowie einer einfachen und übersichtlichen Navigation geschenkt werden. Bei der Suchmaschinenoptimierung sollte speziell auf drei wichtige Faktoren geachtet werden:
  • die Keywords: Ihre Seite sollte im Titel, im Text und im Dateinamen die Suchwörter enthalten.
  • eine hohe Link Popularity. Das bedeutet, dass viele Seiten auf Ihre Seite verlinken.
  • ein hoher Page-Rank. (Mit dem Page Rank stuft die Suchmaschine Google in verschiedene Qualitätslevel von 0-10 ein.)
Sollten Sie sich entscheiden, die Optimierung Ihrer Seite von einem Experten durchführen zu lassen, achten Sie darauf, dass dieser nur mit legalen Methoden arbeitet. Lassen Sie sich vorher genau erklären, wie die Arbeit der Optimierer im Detail aussieht.

Im ersten Teil dieses Artikels haben wir unsere Informationen für die contentPages aus einer Datenbank gelesen. Falls Sie mit MySQL-Abfragen, insbesondere bei Abfragen über mehrere Tabellen, noch Schwierigkeiten haben, möchten wir Ihnen unsere Software UltimateQuery empfehlen, die wir in unserem Hause entwickelt haben. Sie können eine kostenlose Version unter www.evdb-solutions.de/ bzw. www.loonaticmedia.de/ herunterladen. Wir hoffen, dass Sie dadurch mögliche Probleme bewältigen können.

Wenn die Suchmaschine Ihre Seiten nicht sofort indexiert, ist dies kein Grund zur Sorge. Dieser Prozess kann zwischen vier Wochen und drei Monaten in Anspruch nehmen und durch verschiedene Faktoren verkürzt oder gar erst ermöglicht werden.


    Hat Ihnen dieser Artikel gefallen? Dann abonnieren Sie das Entwickler Magazin direkt über unser Online-Formular.

zur vorherigen Seite
zurück
an den Anfang der Seite
nach oben
Diesen Artikel drucken
drucken
Diesen Artikel weiterempfehlen
empfehlen

Software & Support Verlag GmbH