.htccess zum Frühstück
Die Woche fängt gut an, wenn man davon absieht, dass ich tot müde bin und es mir schwer fällt die Augen aufzulassen.
Gerade habe ich bei Ne8 Anpassungen an der .htaccess vorgenommen und die Links im phpBB angepasst und da ich so sozial bin, gibts hier auch gleich ein kleines Tutorial zur .htaccess:
Also die .htaccess ist eine Datei, die auf dem Apache Server vorhanden ist. Wenn bei euch mod_rewrite auf on steht (dazu einfach mal die php.ini überprüfen), könnt ihr mit der .htaccess URLs umschreiben. Wie viele sicherlich wissen, möglich Suchmaschinen keine dynamischen URLs. Das sind URLs, wo man mit einem ? mehere Paramter übergibt. Zum Beispiel: index.php?sel=kategorie1&action=seite5&post=agEb4vC usw…
Deswegen kann man diese URLs „umschreiben“ bzw. man teilt seinem Apache Server sozusagen mit, dass diese URLs einen Alias bekommen. Wenn ich also beispielsweise eine index.php Datei habe, die auf den Wert für „sel“ wartet, müsste ich normalerweise den Wert per URL übergeben also z.B.: index.php?sel=1. Ich kann aber meinem Apache Server mitteilen, dass er immer, wenn jemand z.B. index/1.html eingibt, diese 1 an index.php?sel= weiterleitet.
Gratis-Report herunterladen: `Die 6 Erfolgsfaktoren, mit denen Sie im Internet Geld verdienen`
Wie mach ich das nun? Wie schon gesagt, mit der .htaccess zunächst einmal öffnet man die Datei in einem reinen Texteditor, möglicherweise ist die Datei garnicht sichtbar, da sie vom System ausgeblendet wird. Dann muss man sie evtl. umbennenen in 1.htaccess, damit sie angezeigt wird und man sie erstmal bearbeiten kann (auf dem Webserver kann man sie dann immernoch in .htaccess umbenennen).
Zunächst einmal sagen wir der Datei:
RewriteEngine on
Im Klartext: URL-Umschreibung ist aktiviert
Und dann erstellen wir eine sogenannte Rewrite Rule.
Wenn wir z.B. möchten, dass immer, wenn jemand index.html eingibt, die index.php Datei geladen wird, sieht das so aus:
RewriteRule index.html$ index.php
Die Syntax ist ganz einfach:
Eingeleitet wird die Regel mit RewriteRule, dann folgt, das, was eingegeben wird und wird mit einem $-Zeichen beendet dann ein Leerzeichen und die Datei, auf die in wirklichkeit zugegriffen werden soll.
Das ganze könnte auch so gehen:
RewriteRule bla.html$ bla.php
Dann müsste man bla.html eingeben und es würde auf bla.php zugegriffen werden.
Da man aber – zum Beispiel bei Foren – unmöglich für jeden erdenklichen Eingabefall eine Regel schreiben kann, arbeitet man mit Variablen. z.B. so:
RewriteRule ([0-9]+).html$ index.php?zahl=$1
Ok, das sieht schon
etwas komplizierter aus. Stellen wir uns vor, die index.php reagiert auf die Eingabe von Ziffern zwischen 0-9 (die mehrfach wiederholt werden können) man bekommt also eine Ausgabe, wenn man index.php?zahl=15 eingibt oder wenn man index.php?zahl=8925 eingibt. Nun wird dem Server mitgeteilt, dass immer wenn jemand x.html eingibt, er das an index.php?zahl=x weiterleiten soll.
Wenn ich also die Seite 459.html aufrufe, wird mir die Seite index.php?zahl=459 geliefert wärend in der Adresszeile noch 459.html steht.
( und ) geben an, dass hier eine Art Variable steht. Innerhalb der [ ] stehen die Möglichkeiten von „Typen“ denen die Variable angehört. In diesem Fall, muss die Variable also eine Ziffer zwischen 0-9 sein, das +hinter dem ] gibt an, dass es unendlich viele Ziffern sein könnten. Wenn ich also das + weg lasse, könnte ich immernoch 9.html aufrufen und würde index.php?zahl=9 geliefert bekommen, aber nicht mehr 12.html, da es sich hier um 2 Ziffern handelt.
Der Wert, der für diese Variable eingegeben wird, wird in $1 gespeichert und kann so an die „richtige“ URL weitergegeben werden. Wenn man mehere Parameter über Variablen übergibt, verwendet man auch $ und zwar $1 für den ersten Parameter, der übergeben wird $2 für den zweiten usw. Also z.B.:
RewriteRule ^blog/([a-z0-9-]+)/([a-z0-9-]+).html$ blog.php?kategorie=$1&eintrag=$2
Ich könnte also Bsp. http://www.domain.de/blog/allgemein/bla1.html eingeben und es würde auf http://www.domain.de/blog.php?kategorie=allgemein&eintrag=bla1 weitergeleitet werden.
404-Pages selbst gestalten
Mit Hilfe der .htaccess kann man aber auch Errorpages z.B. für 404-Errors (Not found) selbst gestalten. Dazu designed man eine Seite z.B. eine Suchbox oder ähnliches und speichert sie auf dem Webserver ab. Dann fügt man in die .htaccess folgenden Code ein:
ErrorDocument 404 /adressederdatei.php
Redirect
Außerdem lassen sich mit der .htaccess Weiterleitungen erstellen. Einfach mit
Redirect /aufgerufenedatei.html weiterleitung.html
Wenn man nun http://www.domain.de/aufgerufenedatei.html aufruft, wird man auf die Datei weiterleitung.html weitergeleitet.