Permanentlinks erzeugen und auswerten

Mit mod_rewrite hat man die Möglichkeit, Serveranfragen intern umzuleiten. Z.B. jemand ruft http://localhost/test/impressum/ auf und der Server gibt dies in Wirklichkeit an http://localhost/test/index.php weiter. In diesem Tutorial möchte ich euch erklären, wie diese Umschreibung mit .htaccess zu realisieren ist und wie dies mit einem PHP-Script ausgewertet werden kann.

1. GET – Methode
Eine sehr einfache Methode, kann man mit GET realisieren.
Eine GET-Variable übergibt man mit http://localhost/test/?page=impressum. Wir wollen daraus nun http://localhost/test/impressum machen.

Zuerst legen wir die .htaccess Datei an und füllen diese mit folgenden Inhalt:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([0-9a-zA-Z-_]+)$ index.php?page=$1 [L]
RewriteRule ^([0-9a-zA-Z-_]+)/$ index.php?page=$1 [L]
</IfModule>

Nun wird beim Aufruf der Seite http://localhost/test/impressum der Text: impressum angezeigt.

Es ist z.B. auch möglich http://localhost/test/impressum.html intern weiterzuleiten.

RewriteEngine On
RewriteRule ^([0-9a-zA-Z-_]+).html$ index.php?page=$1 [L]

2. REQUEST_FILENAME – Methode
Diese Methode bietet elegante Möglichkeiten. Sie wird übrigens auch von WordPress eingesetzt.
Damit ist es möglich z.B. http://localhost/test/artikel/unterseite/nochmehr/vielmehr auf http://localhost/test/ intern umzuleiten.

Zuerst legen wir die .htaccess Datei an und füllen diese mit folgenden Inhalt:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /test/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /test/index.php [L]
</IfModule>

Nun legen wir ein PHP-Script mit dem Namen index.php an und füllen es mit:

<?php
$req_uri = explode('/', $_SERVER['REQUEST_URI']);
$req_script = explode('/',$_SERVER['SCRIPT_NAME']);
for($i= 0;$i < sizeof($req_script);$i++){
if ($req_uri[$i]     == $req_script[$i]){
unset($req_uri[$i]);
}
}
$req_c = array_values($req_uri);
echo"".$req_c[0]." | ".$req_c[1]." | ".$req_c[2]." | ".$req_c[3]." | ".$req_c[4]." | ".$req_c[5]." | ".$req_c[6]." | ".$req_c[7]." | "; //wertet bis zu 8 Kommandos also http://localhost/1/2/3/4/5/6/7/8/
switch($req_c[0]){
case '1' :
echo 'Gültiges Kommando: '.$req_c[0];
break;
case '2' :
echo 'Gültiges Kommando: '.$req_c[0];
break;
default:
echo 'Das Kommando ist nicht bekannt.';
break;
}
?>

Nun könnt Ihr damit z.B. euer eigenes Content Management System aufbauen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

84 − = 81