IT-Academy Logo
Sign Up Login Help
Home - Internet - Web-Marketing - Suchmaschinenoptimierung - Suchmaschinenfreundliche PHP-Seiten entwickeln



Suchmaschinenfreundliche PHP-Seiten entwickeln

Jeder Webmaster möchte, dass seine Seite ein gutes Suchmaschinenranking bekommt. PHP-Seiten sind da etwas benachteiligt. Dieser Artikel beschreibt kurz worauf man achten sollte.


Autor: Patrick Faes (dreamer)
Datum: 26-02-2004, 20:55:35
Referenzen: keine
Schwierigkeit: none
Ansichten: 8100x
Rating: 9 (4x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Suchmaschinenfreundliche PHP-Seiten entwickeln

PHP-Seiten sind bekannt dafür schwerer (oder zumindest anders) zu sein wenn es auf Suchmaschinen-Optimierung ankommt. Hier ist eine Übersicht der größten Probleme die man so begegnet wenn man PHP-Seiten ein hohes Ranking geben will. Obwohl dieser Artikel über PHP handelt, ist er eigentlich relevant für alle dynamische Seiten.

PHP und Geschwindigkeit

Kompilierungsdauer ist wichtiger als die Datei-Größe

Auch wenn die Datei-Größe die Ladezeit erhöht, ist dies nicht so wichtig, da Suchmaschinen auf Servern mit einer hohen Bandbreite laufen. Das wirklich wichtige ist die Dauer der Ausführung des Scripts. Wenn eine Suchmaschine zu lange warten muss auf eine Antwort der zu indexierende Seite, könnte der Server die Seite als inaktiv bewerten.

Die größte Verzögerungen in ein PHP-Script sind immer die Datenbanken und die Schleifen (for, while und do-while). In Datenbanken (z.B. MySQL.com) sollte man die zu selektierenden Spalten immer bei Namen nennen, anstatt SELECT *. Dies verringert die Dauer enorm. Wenn Sie MySQL benutzen, ist es ratsam Ihre Queries (Such-Aufträge) vorab zu testen mit dem EXPLAIN-Statement (mehr dazu).

Um Schleifen zu optimieren, sollten Sie so viele Daten wie möglich vorab definieren und diese dann in der Schleife nutzen, z.B. count($array).

Undeutliche URL

PHP-Seiten sollten aussehen wie HTML-Seiten


Es ist wichtig, dass eine Suchmaschine Ihre Seite eindeutig als eine HTML-Seite erkennt. Der Unterschied zwischen PHP-gesteuerte Seiten und normalen HTML-Seiten ist der Aufbau einer URL. In PHP werden dort oft GET-Variablen mitgegeben. Wenn Sie ein Apache-Server haben, können Sie statisch aussehende URLs nachahmen, oder mit einer kleineren Seite können Sie die Anzahl an GET-Variablen auf ein Minimum beschränken. Wie auch immer, vermeiden Sie, dass eine Suchmaschine zwei verschiedene Links zu einer völlig gleich aussehende Seite sieht.

Ein Beispiel das Probleme verursacht: Seite.php?var=lkdjdfhv&var2=345&var3=kfjdks

Besser wäre da: Seite.php?var=kategorie&var2=topic

Viele dynamisch zusammen gestellte Seiten haben kryptische URLs. Da im ersten Beispiel nur drei Variablen drin stehen, werden die meisten Suchmaschinen diese noch gerade indexieren. Im zweiten Beispiel wurden die Variablen aber ausgetauscht gegen Begriffe, die etwas mehr über die Seite sagen. Dies sollte man tun.

Wenn Sie wirklich sehr viele Variablen brauchen, könnten Sie diese alle in einer String zusammen setzen (z.B. var1_var2_var3_var4 usw.) und diese dann später wieder trennen, oder einfach Sessions nutzen(mehr dazu).

Trans_sid abschalten

Der häufigste Fehler ist warscheinlich die Trans_sid

Der wahrscheinlich häufigster Fehler ist, dass PHP dazu neigt automatisch die Session-ID an jedem Link an zu hängen wenn der Browser Cookies ablehnt (wie Suchmaschinen es tun). Dies wird auch automatisch passieren, wenn PHP installiert wurde mit der -enable-trans-sid Option (standard ab PHP 4.2). Das Resultat ist, dass jeder Link eine GET-Variable hinzugefügt wird mit einer langen, kryptische Nummer (die Session-ID). Außer dass die Links dadurch sehr klobig wirken, gibt es dadurch mehrere Links die auf demselben Content weisen. Eine Suchmaschine könnte dies als SPAM bewerten und die Seite streichen.

Man kann dies abschalten:
  • wenn man Zugriff hat auf die PHP.ini: setzen Sie session.use_trans_sid auf false.
  • ansonsten: ändern Sie die .htaccess indem Sie <IfModule mod_php4.c> php_flag session.use_trans_sid off </IfModule> hinzufügen.
Dynamische URL maskieren

Schon die bloße Anwesenheit eines Fragezeichens kann für eine Verspätung der Aufnehmung in eine Suchmaschine sorgen.


Dies wurde z.B. von Daniel Dulitz (Google) bestätigt. Dies macht man aus dem Grund, damit die Seiten nicht zu sehr verlangsamt werden durch die Besuche des Spiders.


neo
Administrator
Beitrag vom:
02-03-2004, 11:05:28

super

inhaltlich gefällt mir der artikel auch sehr gut.

aber heißt es nicht "indizieren" statt "indexieren". ich stoße oft auf beide wörter im selben kontext und weiß noch immer nicht welches korrekt ist... ;-)

-----------------------------------------------------
\iii/


Rolfhub
Senior Member
Beitrag vom:
29-02-2004, 01:15:19

Performance

Tja, ich bin mir nicht so ganz sicher, aber ich habe folgendes gefunden: --- Zitat --- A typical FAQ about URL rewriting is how to redirect failing requests on webserver A to webserver B. Usually this is done via ErrorDocument CGI-scripts in Perl, but there is also a mod_rewrite solution. But notice that this is less performant than using a ErrorDocument CGI-script! [...] This uses the URL look-ahead feature of mod_rewrite. The result is that this will work for all types of URLs and is a safe way. But it does a performance impact on the webserver, because for every request there is one more internal subrequest. So, if your webserver runs on a powerful CPU, use this one. If it is a slow machine, use the first approach or better a ErrorDocument CGI-script. --- Zitat Ende --- Ich denke, das passt auch auf meine Variante.

-----------------------------------------------------


no_comment
Professonial
Beitrag vom:
28-02-2004, 12:27:47

wow, das ist auch sehr interessant. Eine ähnlcihe Methode mit dem gleichen Ziel hatte ich schon einmal mithilfe der .htaccess-Funktion mod_rewright vernommen. Diese soll allerdings sehr Rechenintensiv für den Server sein. Wie sieht es mit deiner genannten Methode aus, inwiefern belastet sie den Server?

Gruß,
kalurak

-----------------------------------------------------
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel -- http://pc-intern.com http://straightvisions.com


Rolfhub
Senior Member
Beitrag vom:
28-02-2004, 03:46:48

Update

Ich habe festgestellt, dass man je nach Server eine der beiden Zeilen einsetzen muss, da die jeweils andere nicht zu funktionieren scheint:
header("HTTP/1.1 200 OK");
-oder-
header("Status: 200 OK");


-----------------------------------------------------


Rolfhub
Senior Member
Beitrag vom:
28-02-2004, 02:36:49

Noch ein Trick

Ein Freund von mir hat einen Weg gefunden, zu einer URL ohne Fragezeichen zu kommen, die tatsächlich den Anschein erweckt, man hätte eine normale HTML-Datei vor sich, obwohl alle Ausgaben des Servers aus einer Datenbank stammen. Man nehme (ich gehe hier davon aus, dass der Trick auf die gesamte Domain anzewandt wird, man kann natürlich auch nur ein Unterverzeichnis derart "vorgaukeln"):
------------
* Eine .htaccess - Datei: "ErrorDocument 404 /content.php"
(Diese wird aufgerufen, wenn keine Datei mit dem aufgerufenen Namen gefunden wurde)
* Eine von PHP schon vordefinierte Variable: $REQUEST_URI
(Diese enthält die (erfolglos) aufgerufene URL)
* Die PHP - Funktion header()
(Damit kann dem Besucher vorgegaukelt werden, das Dokument wäre doch gefunden worden, sonst zeigen manche Browser (M$ - Ich hasse dich!) nicht das vom Server gelieferte Dokument an, sondern eine eigene Seite)
------------
Die Variable $REQUEST_URI kann vom PHP - Skript beliebig ausgewertet werden, z. B. können einzelne Teile daraus in einer SQL-Abfrage eingebaut werden.
Der Ablauf ist folgender:
1. Das Skript prüft, ob die $REQUEST_URI Sinn macht, wenn nicht, kann mit include() die eingentliche Fehlerbehandlungsseite ausgegeben werden.
2. Wenn $REQUEST_URI Sinn macht, wird zuerst (bevor andere Ausgaben durchgeführt werden!) die Fkt. header() aufgerufen: "header("HTTP/1.1 200 OK");"
3. Dann wird der normale, dynamische Content erzeugt und ausgegeben.
Fertig.
Z.B. könnte ein Aufruf von
"http://www.beispiel.com/Tabellenname/Spaltenname/Muster.htm"
in ein SQL-Query umgesetzt werden, wobei in der Tabelle "Tabellenname" alle Zeilen ausgegeben werden, die in der Spalte "Spaltenname" das Muster "Muster" matchen (z. B. via Regular Expressions).
Ergo: Ich habe eine URL, die wie eine normale URL zu einer normalen HTML-Datei aussieht, in Wirklichkeit existieren weder das Verzeichnis, noch eine Datei mit diesem Namen. Ich könnte sogar so weit gehen, alle Binärdateien ebenfalls in der DB zu speichern (z. B. als BLOB), dann wären im Dateisystem nur noch genau zwei Dateien enthalten (1 x PHP, 1 x .htaccess).


-----------------------------------------------------


no_comment
Professonial
Beitrag vom:
27-02-2004, 21:19:23

Ein wahnsinnig informativer Artikel

ausgezeichnet, super!

-----------------------------------------------------
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel -- http://pc-intern.com http://straightvisions.com


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06246
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1154
Comments: 0