Thiemo Fetzer 21. Mai 2004

Suchmaschinenfreundliche URLs

Kein Beitragsbild

Dynamische Webseiten können durch mod_rewrite auf einfache Art und Weise suchmaschinenfreundlich gemacht werden. Leider steht das mächtige Modul aus Sicherheitsgründen nicht jedem zur Verfügung. Es gibt eine andere Möglichkeit.

Dynamische Anwendungen schicken in der Regel Anfragen an die serverseitigen Programme über Parameter in dem URI. Jeder kennt Adressen wie diese:

http://www.shop-was.de/katalog.php?kategorie=buch&isbn=12021002

Diese Form von URIs werden von den Suchmaschinen „skeptisch“ betrachtet und zum Teil gar nicht indiziert. Hier soll es um eine einfache Lösung des Problems gehen. Dabei wird nicht auf das Modul mod_rewrite vom Apache Webserver zurückgegriffen, sondern auf einfache htaccess Funktionen. Man möchte die oben angegebene URL beispielsweise in die folgende umwandeln:

http://www.shop-was.de/katalog/buch/12021002

Um dies zu erreichen, muss man dem Webserver klar machen, dass die Datei katalog.php auch als php-Datei ausgeführt wird, sollte diese nicht mit der PHP-Dateiendung aufgerufen werden. Des Weiteren muss in der PHP-Anwendung eine Funktion eingefügt werden, welche die Variablen aus der Anfrage-URL extrahiert und an die Anwendung übergibt.

Ersteres Problem kann mit der forcetype-Direktive des Apache-Moduls mod_mime gelöst werden. Dieses Modul ist auf allen Apache-Servern verfügbar.

 <Files
katalog>
ForceType application/x-httpd-php
</Files>

Dieser Code muss in eine htaccess-Datei eingefügt werden, die wiederum in jedem Verzeichnis liegt, in welchem das Programm katalog.php liegt.

Das zweite Problem kann ebenfalls einfach gelöst werden. Durch eine einfache PHP-Funktion, die direkt nach dem Aufruf des Programms ausgeführt wird.

      function URL_aufsplitten() {
global $REQUEST_URI;
$erg = explode("/",$REQUEST_URI);
$num = count($erg);
$parameter = array();
for ($i = 2 ; $i < $num ; $i++) {
$parameter[$i] = $array[$i];
}
return $parameter;
}

Dabei wird zunächst auf die Variable REQUEST_URI, die eine von PHP vordefinierte Variable ist, zugegriffen. Sie enthält bei unserer Beispiel URL nun

/katalog/buch/12021002

Über diese URL müssen nun die einzelnen Parameter ermittelt werden. Dies geschieht durch das „aufsplitten“ der URL durch die Funktion explode(), welches als Trennzeichen den „/“ nimmt. Das Ergebnis landet in dem Array $erg.

Durch count() wird die Anzahl der Elemente des Arrays bestimmt. In unserem Beispiel sind es vier Elemente. Das erste Element ist ein leeres Element, der Inhalt vor dem ersten Slash.

Das zweite Element ist „katalog“, das dritte „buch“ und das vierte „12021002“, die ISBN. Für das Programm sind nur die Parameter wichtig, deshalb wird in der for-Schleife erst ab dem 2. Element gezählt (bei Arrays fängt man bei der Zahl 0 an zu zählen). Das „0“-te und das „1“-te Element werden also nicht beachtet.

Im Rahmen der Programmierung kann man die Funktion direkt zu Beginn des Codes ausführen und die Parameter über das zurückgegebene Array $parameter ermitteln.

Thiemo Fetzer

Thiemo Fetzer lebt seit 2008 in London und promoviert dort im Fachbereich "Entwicklungsökonomie" an der London School of Economics. Zuvor hat er Wirtschaftswissenschaften, Mathematik und Informatik in Magdeburg und Ulm studiert.
Dr. Webs exklusiver Newsletter
Hinweise zur Protokollierung der Anmeldung, dem Einsatz von MailChimp als Versanddienstleister und zu den Widerrufsrechten findest Du in unseren Datenschutzhinweisen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.