IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Spezifisches - Suchmaschinenfreundliche URLs



Suchmaschinenfreundliche URLs

Dynamische Adressen ohne ?var=wert Allseits präsent aber unschön und schlecht fürs Ranking: URLs mit Variablen als Anhängsel. Viel schöner sind dagegen augenscheinlich statische Adressen. Möglich macht das ganze das Modul mod rewrite für den Apache-Server, welches man über die .htaccess-Datei ansprechen kann.


Autor: Matthias Reuter (no_comment)
Datum: 25-07-2006, 13:02:51
Referenzen: PC-Intern.com
Schwierigkeit: Profis
Ansichten: 3196x
Rating: 8 (1x 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]





Zunächst muss also eine Datei namens .htaccess in einem Verzeichnis erstellt werden. Manche Webhoster erlauben .htaccess-Dateien nur in bestimmten Unterverzeichnissen, andere verbieten sie ganz. Sollten die Scripts hier also nicht funktionieren, sollte beim gewählten Webhoster nach .htaccess und mod rewrite Funktionalität gefragt werden.

Aktiviert wird das Modul indem man folgendes in die .htaccess-Datei einfügt:
RewriteEngine on
Options FollowSymLinks



Statt nur über http://pc-intern.com/artikel.php?id=4997 soll der Artikel auch unter http://pc-intern.com/artikel-4997.html zu erreichen sein.

Dazu genügt folgender .htaccess-Code, der unter dem oben beschriebenen Code angehängt wird:

RewriteRule ^artikel-([1-9][0-9]*).html artikel.php?id=$1


Es wird also erkannt, dass ab einem bestimmten Punkt eine Variable in der Adresse erscheint. ([1-9][0-9]*) sagt aus, dass es sich hierbei um einen Integer, also eine Ganzzahl handelt. Anderes wird also ignoriert und endet in einem Error 404, da die aufgerufene URL keiner RewriteRule zugeordnet werden kann.

Diese Variable wird via $1 an die definierte Adresse weitergegeben, die hier den Namen artikel.php trägt. Diese Datei muss nun tatsächlich auf dem Webserver in dem Verzeichnis existieren und sollte auch die Variable $id interpretieren und den darüber angeforderten Artikel liefern können.

Bei der Pseudo-Datei artikel-([1-9][0-9]*).html kann die Dateiendung beliebig sein, ein aussagekräftiges .html ist allerdings nicht ohne Grund der Quasi-Standard im Web und sollte auch benutzt werden. Auf Google macht das den Eindruck einer servertechnisch statischen Seite und erhält damit einen zusätzlichen Glaubwürdigkeitsrang.

Nicht ohne Grund vererbt Google seinen Pagerank nur an Adressbereiche, die sich im statischen Feld befinden: Wird also auf artikel.php?id=3482 verlinkt, so erbt allein die Datei artikel.php den Pagerank, während die Erweiterung ?id=3482 schlicht ignoriert wird. Bei mehreren hundert Seiten kann dies enormes Potential einer Website verschenken, denn im Wettkampf um die vorderen Plätze im Suchmaschinenranking fehlen die zusätzlichen Pagerankpunkte den Unterseiten, während die Seite artikel.php für sich allein keinen Mehrwert und somit kein inhaltliches Futter für Google bietet. Denn was nützt einem eine Pagerank 10 Seite, wenn diese aufgrund mangelnden Inhalts keine Suchbegriffe produziert, unter denen sie zu finden ist.


Viele Webmaster werden jedoch ab hier schon wieder faul und setzen die Technologie nicht konsequent fort. Doch sie bietet noch weitere Vorteile, die eine konsequente Anwendung interessant machen. So ist der erste immer noch die schlichtweg sympathischere URL in der Adressleiste, doch auch sicherheitstechnisch ist die Technologie interessant: So kann man das eigentlich zugrunde liegende Script verschleiern. Ob es sich nun um ein ASP, Perl oder PHP-Script handelt, dass die augenscheinlich statische Website dynamisch zusammensetzt, ist so nur noch schwer auszumachen und für Laien schlicht unmöglich.

Ein enormer Sicherheitsaspekt ist auch das konzeptbedingte Ignorieren von Fehleingaben. Sofern keine Workarounds programmiert werden, werden nur die vordefinierten Variablen übertragen. Dadurch ergibt sich ein extrem enger Flaschenhals zur Einschleusung von ungewolltem Code, der das System kompromittieren könnte. Und möchte der potentielle Angreifer die bestehenden Variablen für seine Zwecke missbrauchen, so muss er diese erst in Erfahrung bringen. Doch stehen die durch mod rewrite nicht mehr im Klartext in der Adresszeile.

Daher sollten auch URLs für oft vernachlässigte interaktive Funktionen überprüft und abgeändert werden. Die können auch gerne mehrere Variablen enthalten, wie folgendes Beispiel einer möglichen Kommentar- bzw. Antwort-Funktion demonstriert:

Bisherige Zieladresse: http://pc-intern.com/artikel.php?id=4997
Neue Zieladresse: http://pc-intern.com/artikel-4997.html

RewriteRule ^artikel-([1-9][0-9]*)-(.*).html artikel.php?id=$1&action=$2


Weitere Variablen werden also einfach der Reihenfolge nach hochzählend hinzugefügt ($1, $2, $3 usw.).


Eine von mir nicht favourisierte Lösung soll hier auch angesprochen werden: So ist es auch möglich eine Zeichenfolge mit in der Adressleiste zu transportieren, die zum Beispiel der im Artikel enthaltenen Überschrift entspricht. Diese kann man mit folgendem PHP-Code URL-tauglich machen:
$id = '4997'
$title1 = 'Suchmaschinenfreundliche URLs';
$title2 = 'Dynamische Adressen ohne ?var=wert';
$title_complete = $title1.'_'.$title2;

$titleurl = strtolower($title_complete);
$titleurl = trim($titleurl);
$titleurl = str_replace(' ', '_', $titleurl);
$titleurl = str_replace('-', '_', $titleurl);

$uniqueurl = 'artikel-' . $titleurl . '-' . $id . '.html';
echo $uniqueurl;
artikel-suchmaschinenfreundliche_urls_dynamische_adressen_ohne_?var=wert-4997.html


Der entsprechende .htaccess-Code zur Interpretation muss dann wie folgt aussehen:

RewriteRule ^(.*)-(.*)-([1-9][0-9]*).html  index.php?rubrik=$1&titleurl=$2&id=$3


Damit werden die Adressen allerdings undefinierbar lang. Sie lassen sich also entsprechend schlecht verbal weitergeben oder per Hand niederschreiben. Manche möchten das jedoch gern aufgrund des Trugschlusses verwenden, die Suchmaschinen würden solche URLs inhaltlich entschlüsseln und als Suchbegriffe eine hohe Relevanz geben.

Dies hat sich jedoch nicht bestätigt. Vielmehr entstand dieser Trugschluss, weil der Linktext oft wie die Zieladresse lautet und daher der Linktext schlicht den Domainnamen und Rest-Adresse lautet. Und der Linktext hat dagegen Einfluss aufs Ranking.

Fazit
Die Technologie birgt also enormes Potential zur Stärkung von Ergonomie und Sicherheit einer Website und ermöglicht zusätzlich eine bessere Gewichtung in Suchmaschinen. Man sollte sich also die Mühe machen und versuchen dem Besucher möglichst wenig von der Codesuppe, die sich hinter einer Website verbirgt aufzudrängen. Denn die Adresszeile ist eine der prominentesten Stellen im Browser und sollte entsprechend gepflegt und abschreibtauglich präsentiert werden.


no_comment
Professonial
Beitrag vom:
04-08-2006, 14:37:26

Hi,

vielen Dank für dein Lob. Die Zeichenfolge ([1-9][0-9]*) ist ein "Regulärer Ausdruck". Die verwendet man um eine bestimmte, variable Zeichenfolge zu interpretieren. ([1-9][0-9]*) bedeutet, dass nur Zahlen angenommen werden. Mehr Infos findest du unter http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

Gruß,
no_comment

-----------------------------------------------------
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


paedubucher
Professonial
Beitrag vom:
03-08-2006, 19:28:28

Guter Artikel

Sehr informativer Artikel! Was du vielleicht noch hättest tun könne, den Ausdruck ([1-9][0-9]*) etwas besser erklären. Den verstehe ich ehrlich gesagt nicht wirklich... Eine kleine Erklärung hätte da nicht geschadet...

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


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06245
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: 1147
Comments: 0