Es ist euch bestimmt schon öfters aufgefallen, dass auf manchen Seiten, alle Links auf andere Seiten in unterschiedlichen Ordnern liegen (http://www.example.org/page/param1/param2) (so z.B. hier im Blog). Das ist aber nicht wirklich so. In Wirklichkeit leitet nur eine .htaccess Datei alle Anfragen auf ein PHP Script weiter, und dort wird das dann verarbeitet. Ich setze diese Technik selber auch auf einigen Seiten ein, da ich es einfach schöner finde, als eine vorgetäuschte HTML Datei, wo alle Parameter übergeben werden (page-param1-param2.html). Und dass eine normale PHP Datei, mit angehängten Parametern nun überhaupt nicht schön ist, das dürfte sich jeder denken können. Google mag dies ja auch nicht sonderlich. Ob es für Google einen großen Unterschied macht, ob es jetzt diese vorgetäuschten Ordner sind, oder eine vorgetäuschte HTML Datei mit vielen Parametern, das weiß ich nicht. Aber ich glaube, dass es keinen großen Unterschied macht.
Und wie dies funktioniert/wie ihr sowas selber bauen könnt, werde ich euch jetzt erklären:
Als erstes benötigten wir eine .htaccess Datei mit folgendem Inhalt:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . ./index.php [L]
Dieser Rewrite Code sorgt dafür, dass alle Anfragen, die an den Server geleitet werden, an die index.php weitergegeben werden. Das stimmt aber nur bedingt. Wenn eine Anfrage an eine Datei getätigt wird, die auf dem Server als solche existiert, wird diese angezeigt, und die index.php wird nicht aufgerufen.
Nun geht es weiter mit der PHP Datei, welche die Anfragen bearbeitet.
1 2 3 4 5 6 7 8 9 10 | <?php $path = ''; $params = str_replace($path, '', $_SERVER['REQUEST_URI']); $_params = explode('/', $params); foreach($_params as $key => $value){ if(empty($value)) unset($_params[$key]); } $_params = array_values($_params); ?> |
Dadurch haben wir jetzt alle in der URL übergebenen Parameter in $_params und können sie über den Index das Arrays aufrufen (beginnend bei 0!).
Erklärung: Alles, was aufgerufen wird, wird an die PHP Datei weitergegeben, und steht deswegen in $_SERVER['REQUEST_URI']. Dort ist aber auch der Pfad zum Unterordner enthalten, und der muss gelöscht werden. Dafür gibt es die Variable $path. Dort muss der Pfad von der Domain bis zu dem Script angegeben werden, beginnend mit einem / und ohne / am Ende. Sollte das Script direkt unter der Domain laufen, muss diese Variable leer bleiben.
In der Zeile 4 wird dann die URL aufgeteilt, in die Parameter, und zwar nach jedem Slash in der URL. So haben wir den Array mit den Parametern. Aber falls eine URL mit zwei Slashs aufgerufen wird, ist min. ein leerer Parameter vorhanden. Diese werden dann in den Zeilen 5 bis 8 aussortiert. In Zeile 9 werden dann die Indexes neu vergeben. Von nun an kann man jeden Parameter also über $_params[$index] ansprechen. Will man also den ersten Parameter haben, muss $index eine 0 sein, da der Index eines Arrays bei 0 beginnt.
Das war eigentlich auch schon das schwierigste bei dieser Methode. Jetzt kann man ganz einfach überprüfen, welcher Parameter gesetzt ist, und dafür die entsprechende Datei includieren (oder, wenn mans nicht so übersichtlich haben will, einfach mit in die index.php nehmen *gg*).
An dieser Stelle sei noch anzumerken, dass man für alle Links und Grafiken in der Ausgabe Seite immer die volle Adresse schreiben muss (hierfür empfehle ich Variablen zu verwenden ;)), da die Links/Grafiken ansonsten vom Unterordner aus aufgerufen werden, und dann auch nicht gefunden werden.
Ich hoffe, euch hat dieses kleine Tutorial gefallen. ![]()

