| mod_rewrite |
|
|
|
mod_rewrite ist ein Modul des HTTP-Servers Apache. mod sagt aus, dass es sich um ein Zusatzmodul des Apaches handelt, der englische Begriff rewrite bedeutet umschreiben. Mit rewrite ist die Fähigkeit des Apache mit modrewrite-Modul gemeint, URLs umschreiben zu können. Die mod_rewrite-Regeln werden dabei in der Konfigurationsdatei des Webservers, die den Namen .htaccess hat, abgelegt. Die Datei kann in einzelnen Verzeichnisse des Webserver abgelegt werden und sich nur dort auswirken. Sie kann aber beispielsweise auch für mehrere Verzeichnisse definiert werden. Warum mod_rewrite?Folgendes Beispiel zeigt eine der zahlreichen Möglichkeiten, wie man mit mod_rewrite einen URL umschreiben kann. Dieses erste mod_rewrite-Beispiel sollte damit verdeutlichen, worum es auf dieser Webseite grundsätzlich geht. In diesem Beispiel aus der Praxis wurde die Datei beispielFormular.php in captchaBeispiel.php umbenannt und bekam damit einen aussagekräftigeren Namen. Das sollte aus Gründen der Benutzerfreundlichkeit (Usabilty) und Suchmaschienenfreundlichkeit geschehen. Das Problem bei der Umbenennung war, dass es bereits viele Webseiten im Internet gab, die einen Link auf die Datei mit dem ursprünglichen Namen enthielten und es mit großem Aufwand verbunden gewesen wäre, all diese Links umzubenennen, ganz zu schweigen von denjenigen Links, die vergessen worden wären. mod_rewrite bot hier eine elegantere Lösung. Umschreiben eines URL mit mod_rewriteDurch das Umschreiben des alten URLs in den neuen URL brauchte kein einziger Link geändert zu werden. Immer dann, wenn die Datei mit ihrem alten Namen von einem Browser angefordert wird, wird der alte URL vom Webserver per mod_rewrite in den neuen URL umgewandelt. Darauf wird der Inhalt der neuen Datei an den Browser zurückgeschickt. Dieses Umschreiben des URL per mod-rewrite geschieht intern auf dem Webserver, der Browser merkt davon absolut nichts. Für ihn sieht es so aus, als ob sich auf dem Server nichts geändert hätte. Die Datei kann natürlich ohne weiteres unter ihrem neuen Namen aufgerufen werden, ohne dabei irgendwie durch mod_rewrite betroffen zu werden.URL 1: http://www.peuss.com/PHP/Captcha/beispielFormular.php URL 2: http://www.peuss.com/PHP/Captcha/captchaBeispiel.php Der mod_rewrite - CodeDas umschreiben von URL 1 zu URL 2 erledigt der folgende mod_rewrite-Code:RewriteEngine on RewriteRule beispielFormular.php$ captchaBeispiel.phpDie erste Zeile schaltet die Rewrite-Engine an. In der zweiten Zeile wird die Regel (Rewrite-Rule) zum Umschreiben des URLs definiert. Dabei ist die erste Zeichenkette nach dem Schlüsselwort RewriteRule das Suchmuster, das auf alle URLs in diesem Verzeichnis, die von außerhalb des Servers angefragt werden, angewendet wird. Das $ als letztes Zeichen legt fest, dass dieses Suchmuster als letzter Teil in der Anfrage stehen muß. Die Anfrage nach einer Datei namens beispielFormular.php5 würde in diesem Fall beispielsweise nicht umgeleitet werden, weil dabei eine 5 und nicht das Suchmuster am Ende steht. Der letzte Teil der RewriteRule ist eine Zeichenkette, mit der das erkannte Suchmuster ersetzt wird. |

