Software
HowTo´s
Social Links
|
ModRewrite
ModRewrite ist eine Apache-Engine und ein bestandteil davon. Aber vorher sollte man erst einmal wissen, wozu man diese Engine braucht und ob sie wirklich von nöten ist. Dazu gehen wir erst einmal zu einem Bestandteil der PHP Programmierung.
Benötigt wird sie eigentlich nur wirklich dringend, wenn man Dynamische Webseiten Programmiert. Man kann sie zwar auch für Statische Webseiten nutzen, aber wirklich sinnvoll ist sie erst bei Dynamischen Webseiten.
Unterschied von Statischer und Dynamischer Webseite !!
Der Unterschied zwischen einer Statischen und einer Dynamischen Webseite ist schnell erklärt.
- Eine Statische Webseite hat entsprechend ihres Umfangs und des Inhaltes entsprechend viele einzelne Seiten (HTML Dateien). Sie sind leicht zu erstellen, aber zur Pflege und Änderung dieser Seiten ist viel Zeit und ein entsprechend hoher Aufwand von nöten.
- Eine Dynamische Webseite dagegen ist etwas aufwändiger in der Erstellung, jedoch wesentlich einfacher zu Pflegen und zu Ändern. Sie besteht zwar aus vielen kleinen PHP Dateinen, aber diese werden dynamisch zu einer Webseite zusammengesetzt.
Was ist die ModRewrite Engine und wozu brauchen wir sie?
Nehmen wir an, Sie programmieren eine Dynamische Webseite und wollen diverse Eingaben und Werte verarbeiten. Diese werden dann meist per URL ($_GET) oder im Hintergrund ($_POST) übergeben. ModRewrite ist sehr sinnvoll, wenn es um Werte geht, die perURL ($_GET) übergeben werden. Vielen haben dann schon oft folgende oder ähnliche Links gesehen:
- http://www.domain.tld/index.php?page=article
- http://www.domain.tld/index.php?page=article&kat=1&id=20
Dies ist dann schon etwas komplexer.
Leider sind solche URLs nicht wirklich Suchmaschinenfreundlich. Obwohl man als Ergebnis mehrere Seiten ausgespuckt bekommt, ist es jedoch laut URL immer ein und die selbe. Somit wird meist nur diese 1 Seite von den Suchmaschinen indexiert. Dies ist schlecht, wenn man doch als Ergebnis doch einige mehrere Seiten sieht. Tja, genau hier kann man ModRewrite ins Spiel bringen.
Suchmaschinen beachten diese Angaben hinter dieser PHP Datein nicht wirklich. Daher sind PHP-Urls nicht wirklich ratsam, wenn man seine Seite doch richtig und oft indexieren lassen möchte.
Freundlicher für Suchmaschinen und auch fürs Auge sind die URLs:
- http://www.domain.tld/article
- http://www.domain.tld/article_1_20
Die URLs sind zum einen wesentlich kürzer und zum anderen ergibt so jede PHP-Url eine eigene URL. Nehmen wir nun die "id=20" als anzahl der Artikel, hätte man als PHP-URL eine einzige Seite. Als kurze Suchemaschinenfreundliche URLs könnten somit 20 einzelne Seiten indexiert werden. Nur kann PHP ohne weitere Bearbeitung damit nichts anfangen, weil dann nach Dateien oder Verzeichnissen gesucht wird. Aber diese Datei oder das Verzeichniss existiert nicht und es wird ein Fehler ausgespuckt.
Hier kommt nun ModRewrite ins Spiel. Natürlich muss erst überprüft werden, ob der angemietete Webspace auch das ModRewrite unterstützt. Nicht jeder Webspace-Anbieter schaltet ModRewrite ein. Am einfachsten ist es, man erstellt eine kleine PHP-Datei. Diese sollte dann folgendes beinhalten:
| PHP-Code: |
<?php
phpinfo();
?>
|
Nach dem upload der Datei auf den Webspace und dem Aufruf im Browser, kann man nun sehen wie der Webserver konfiguriert ist. Wenn unter dem Punkt "Loaded Modules" ein Modul namens "mod_rewrite" steht, ist es für diesen Webserver aktiviert und kann benutzt werden. ModRewrite kann mit Regeln innerhalb der datei ".htaccess" im Hauptverzeichniss (Root-Directory) konfiguriert werden.
Was kann ModRewrite ?
Tja, was kann es !?
Im allgemeinen kann es rewriten, redirecten, loggen und auch schützen. Hier will ich vorerst einmal nur auf das Thema "URL umschreiben" eingehen.
ModRewrite Möglichkeit: URL umschreiben
Folgende Einträge in der .htaccess leitet alle Anfragen an den Webserver direkt an die index.php.
Die in der Regel enthaltene Zeichenkette "^([0-9a-zA-Z]+)$" weist den Server darauf hin, das nur Ziffern von 0-9, Kleinbuchstaben von a-z und Grossbuchstaben von A-Z enthalten sein dürfen. Das "+" dahinter sagt aus, das es 1 oder mehr zeichen sein dürfen.
| .htaccess |
RewriteEngine on
RewriteBase /
RewriteRule ^([0-9a-zA-Z]+)$ index.php?page=$1
|
Folgende Einträge in der .htaccess leitet alle Anfragen an den Webserver direkt an die index.php, ausser es handelt sich um eine existiernde Datei oder ein existierendes Verzeichniss.
Die in der Regel enthaltene Zeichenkette "^([0-9a-zA-Z]+)$" weist den Server darauf hin, das nur Ziffern von 0-9, Kleinbuchstaben von a-z und Grossbuchstaben von A-Z enthalten sein dürfen. Das "+" dahinter sagt aus, das es 1 oder mehr zeichen sein dürfen.
| .htaccess |
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z]+)$ index.php?page=$1
|
Folgende Einträge in der .htaccess leitet alle Anfragen an den Webserver direkt an die index.php, ausser es handelt sich um eine existiernde Datei oder ein existierendes Verzeichniss.
Die in der Regel enthaltene Zeichenkette "^(.*)$" weist den Server darauf hin, das alle Zeichen enthalten sein dürfen.
| .htaccess |
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?surl=$1 [L,NC,QSA]
|
ModRewrite Möglichkeit: duplicate Content (Doppelter Inhalt) verhindern
Es besteht die möglichkeit, Webseiten mit und ohne www am Anfang aufzurufen. Beide Aufrufe können die Webseite darstellen. Dies kann aber sehr schnell zu duplicate Content führen, was Suchmaschinen gar nicht gern haben und sehr schnell zu einer schlechteren Suchmaschinen Platziergung führen kann. Mit folgendem Code lässt sich duplicate Content verhindern.
| .htaccess |
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.de$ [NC]
RewriteRule ^(.*) http://domain.de/$1 [L,R=301]
|
Dies bewirkt, das der angegebene Hostname in der im Browser befindlichen URL mit dem Hostnamen mit www verglichen wird. Fehlt das www, wird die Anfrage so umgeleitet, das der Hostname mit www in der URL-Zeile des Browsers steht. Somit wird dann ausschliesslich die Domain mit www indexiert und so duplicate Content verhindert.
Gibt es Beschreibungen zu den einzelnen Befehlen ?
Eine Beschreibung von ModRewrite folgt noch !!!
Weiterführende Links ...
http://httpd.apache.org/docs/2.0/misc/rewriteguide.html#ToC4/
http://www.webmaster-toolkit.com/mod_rewrite-rewriterule-generator.shtml
http://www.modrewrite.de/
|