Du bist hier: Startseite > WebWissen > PHP > Interne Verlinkung verbessern
Folge mir bei Twitter...

und bleibe auf dem Laufenden, was die Themen SEO und Webentwicklung angeht!

Sonntag, 11. Oktober 2009 um 22:40 Uhr

Interne Verlinkung verbessern - mit PHP

Bei SEO geht es häufig darum, dass wichtige Seiten einer Website mehr Link-Juice erhalten. Hier erkläre ich, wie man das automatisiert machen kann.

 

 

Das Problem - zu wenige Links auf wichtige Seiten

Gerade bei größeren Websites ist dies ein echtes Problem. Jede Seite ist oft nur per Navigation und Sitemap erreichbar und bekommt somit nur wenig Linkjuice ab (vereinfacht gesagt, kann man auch von PageRank sprechen. D. h. dass die Seite weniger Linkpower erhält). Dies ist so, weil natürlich jeder Link der Navigation/Sitemap so ziemlich den gleichen Link-Juice erhält.

 

Die Lösung - Interne Links auf wichtige Seiten setzen

D. h., dass man im Content, also im Text, möglichst immer dann, wenn es um ein verwandtes Thema zu der zu pushenden Seite geht, einen Link auf diese setzt. Eigentlich eine Wahnsinns-Arbeit. Jetzt sind wir natürlich ein bisserl clever und machen das automatisiert. Die Idee ist, dass man eine Liste aus lauter Wörtern und Links hat, und quasi dem Server sagt: "Jedesmal, wenn du im Text eines der Wörter siehst, machst du einen Link daraus und der zeigt dann auf die entsprechende Seite".

Die Internetkapitäne haben neulich schon einmal darüber gebloggt, wie es z. B. Spiegel Online macht hier. Auch auf SEOmoz wurde vor einiger Zeit ein interessantes Video veröffentlicht, in dem Dr. Pete Meyers erklärt, wie man den internen Linkgraphen manipulieren kann und sollte. Hier ist es:

SEOmoz Whiteboard Friday - Architecture for Commerce with Dr. Pete from Scott Willoughby on Vimeo.

Das machen wir jetzt. Wir bauen einen Linkgraphinator

Ach nee. Lieber doch nicht. Ladet euch das Ding einfach gleich hier runter. Hab's ja schon fertig ;)

So wie funktionert es?

Grundsätzlich gibt es eine PHP Klasse class_linkgraph_inator.php. In dieser Klasse wird eine Datei geladen, welche die Linkpaare enthält. Also die Paare, mit den Wörtern und den Links.

Die Klasse schaut so aus:

<?php

class linkgraphinator {
    
    var $str_text = '';
    
    public function linkgraphinator($str_text) {
        $this->str_text = $str_text;
    }
    
    public function make_links() {
        require_once('linkpairs.php');
        foreach($array_linkpairs as $str_word => $str_link) {
            $this->str_text = str_replace($str_word, "<a href=\"$str_link\">$str_word</a>", $this->str_text);
        }
        
        return $this->str_text;
    }

}

?>

Interessant ist hier vielleich, dass in Zeile 14 das Wort (oder die Wortkombination) des ursprünglichen Textes durch den entsprechenden Link ersetzt wird.

Die Datei mit den Linkpaaren sieht so aus:

<?php

$array_linkpairs = array(
    'was'                => 'http://localhost/xampp/ajaxel/webwissen/css/21-ueberschriften-mit-css-hochzaehlen.html',
    'Möglichkeit'        => 'http://localhost/xampp/ajaxel/webwissen/css/21-ueberschriften-mit-css-hochzaehlen.html',
    'viele'                => 'http://localhost/xampp/ajaxel/webwissen/css/21-ueberschriften-mit-css-hochzaehlen.html',
    'Problem'            => 'http://www.google.de',
    'Man hat'            => 'http://www.google.de'
);

?> 

Hier ist einfach nur ein Array drin. Im Key steht das Wort und der entsprechende Value dazu ist die URL.

Nun muss man das Ganze nur noch zum Laufen bekommen. Ich hab's mal in Joomla eingebaut. Es lässt sich aber in jedem Xbeliebigen CMS oder auch in ganz normalen Seiten einbauen. Dazu bin ich in die default.php der com_content geganen und habe einfach ein paar Anweisungen reingenommen (es ging hier um die Stelle, an der vorher der Artikeltext mit folgender Anweisung ausgegeben wurde echo $this->article->text;)

require_once('linkgraph-inator/class_linkgraph_inator.php');
$str_text = $this->article->text;
$obj_linkgraphinator = new linkgraphinator($str_text);
$str_text_with_links = $obj_linkgraphinator->make_links();
echo $str_text_with_links;

Also hier wird einfach nur ein neues Objekt meiner Klasse linkgraphinator erzeugt und anschließend der manipulierte Text ausgegeben.

That's it!

So würde dieses Beispiel dann auf meiner Startseite Wirkung zeigen:

Überall, wo vorher das Wort "normal" stand (also nicht das Wort normal, sondern einfach nur das Wort ohne, dass ein Link drum herum ist) ist es nun durch einen Link ersetzt worden.

Jetzt ist nur ein bisserl Vorsicht geboten, denn man darf das auch nicht übertreiben, denn sonst kommt sowas dabei raus: Internal Link Fail.

Was haltet ihr von der Idee? Bin auf eure Kommentare gespannt!

Kommentare

avatar torsten-pohl.de
+2
 
 
Sinnvolle Begriffe, die man auf Unterseiten verlinken kann, finden sich in nahezu jedem Projekt. Insofern finde ich die Methode ganz gut geeignet, eine Seite zu durchbluten, wenn es die Architektur der Seite - aus welchem Grund auch immer - nicht hergibt.
Ich würde die Begriffe aber nicht mit str_replace ersetzen, sondern mit preg_replace, da diese Funktion mit dem optionalen Parameter limit die Angabe der maximal möglichen Anzahl von Ersetzungen für jedes Suchmuster ermöglicht. Damit kannst du erreichen, nur das erste Vorkommen eines Suchmusters mit einem Link zu umschließen und das Ergebnis sieht nicht mehr ganz so vorsätzlich aus.
Statt in die Auswahl von möglichst vielen Linkpaaren, würde ich mein Hirnschmalz aber eher in eine sinnvolle Seitenarchitekt ur stecken, die eine solche interne Verlinkungsmaßnahme erst gar nicht erfordert. Für das automatische Einbinden eines Glossars ist die Klasse allerdings "klasse".
Montag 12 Oktober 2009, 11:01
Antwort schreiben
Name *
Code   
ChronoComments by Joomla Professional Solutions
Kommentar abgeben
Cancel
avatar Patrick Vogt
0
 
 
Dieses Skript funktioniert bei mir leider nicht, obwohl ich genau wie in der Beschreibung vorgegangen bin. Mootools habe ich in einem extra Verzeichnis abgelegt. Daran lag es aber auch nicht, da selbst im selben Verzeichnis mit meiner Datei, in der das Skript ablaufen soll, funktionierte es nicht. Weis jemand, woran das liegen könnte?
Montag 12 Oktober 2009, 19:21
Antwort schreiben
Name *
Code   
ChronoComments by Joomla Professional Solutions
Kommentar abgeben
Cancel
avatar Axel Scheuering
0
 
 
Hallo Patrick. Kannst mir ja mal schreiben, was genau nicht funktioniert. Gibt's ne Fehlermeldung? Wie hast du es eingebaut? Meine Mailadresse findest du im Impressum.
Viele Grüße
Axel
Montag 12 Oktober 2009, 19:23
Antwort schreiben
Name *
Code   
ChronoComments by Joomla Professional Solutions
Kommentar abgeben
Cancel
Name *
Code   
ChronoComments by Joomla Professional Solutions
Kommentar abgeben

Tags

interne Verlinkung  Linkgraf  Linkgraph PHP  Verlinkung verbessern  

Tweets

Social Bookmarks

Über den Autor

Mein Name ist Axel Scheuering. Während meines Studiums (Wirtschaftsinformatik) habe ich meine Brötchen als Webentwickler verdient. Mmhh lecker Brötchen. Seit ich mit dem Studium fertig bin, arbeite ich hauptberuflich im Bereich Suchmaschinenoptimierung.

2009 habe ich bei der Google Online Marketing Challenge teilgenommen und mich zusammen mit meinem Team gegen über 2.000 Teams aus der gazen Welt durchgesetzt. Wir haben unter den "Final 15" weltweit den 2. Platz erreicht und dafür einen Marketingpreis erhalten :)

Diese Site betreibe ich nicht mehr aktiv weiter. Mein neues Blog findest du unter Methode-Web.de

Inhalte dort sind Webentwicklung, Suchmaschinenoptimierung, das Web allgemein und Literaturtipps.