Die Datei .htacces weist den Webserver an, bestimmte Dinge zu tun. .htaccess muss sich im Rootverzeichnis befinden.
Bei Serverfehler umleiten:
Statische URLs in dynamische URLs umwandeln:
Der Googlecrawler mag dynamische URLs nicht besonders. So wird http://mydomain.de/forum/thread.php?thema=xyz nur einmal indiziert, obwohl Variationen von thema=... völlig andere Inhalte produzieren würde.
Also publiziert man http://mydomain.de/forum/xyz.html und sorgt dafür, dass der Webserver diesen Link auf das Skript leitet. Mit folgenden 3 Einträgen in .htaccess ist das möglich
- Options +FollowSymlinks
- RewriteEngine on
- RewriteRule ^forum/(.*)\.html$ forum/thread.php5?thema=$1
Alle Links mit forum/*.html werden auf forum/thread.php5?thema=* umgleitet.
(.*) wird nach $1 geleitet. Das $-Zeichen hinter html beendet den Regulären Ausdruck.
Weitere Beispiele:
Das wirkliche Umschreiben der URL macht die RewriteRule. Mit ihr wird die Regel definiert, nach welcher die URL verändert werden soll.
news/(.*)\.html$
Das (.*) nach news/ kann für alles stehen, es ist ein Platzhalter, der innerhalb des Regulären Ausdrucks wie eine Variable verwendet werden kann. Der Inhalt wird in $1 zur Verfügung gestellt. Durch einen \ getrennt steht die Dateiendung des Artikels. Das $-Zeichen beendet den Reg. Ausdruck.
Der URL sieht jetzt so aus.
http://www.seite.de/news/nummer.html -> http://www.seiter.de/news.php?nr=nummer
- RewriteRule ^datei(.*)-(.*).htm$ /datei.php?a=$1&b=$2 [L]
Aufruf von
www.domain.de/datei1-2.htm
wird überführt in:
www.domain.de/datei.php?a=1&b=2
Wenn das Ganze nicht funktioniert kann es an folgendem liegen:
- htaccess liegt im falschen Ordner
- 2 .htacces vorhanden, 1x root und 1x in unterordner wo die Datei raus aufgerufen wird.
- Die Pfade stimmen nicht, kommt öfter vor
- mod_rewrite nicht aktiv (siehe phpinfo)
- Namenskonflikte
- manche Hoster benötigen absolute URLs in der Rule
- Dateiendung .htm und .html beachten
Weitere Infos unter http://www.javascriptkit.com/howto/htaccess.shtml