Home
Navigation
Impressum
SEO Welten - Webcoding, Editoren, Scripte und Anwendungen
SEO Welten
Buchempfehlungen
 

Serverseitige Weiterleitungen per htaccess mit mod_rewrite

Serverseitige Redirects

Übersicht / Seite - Weiterleitungen:

  1. per Meta-Tag (allgemeine Infos zur Benutzung)
  2. per JavaScript (clientseitige Redirects mit JavaScript)
  3. auf mobile Seiten (eine einfache Umleitung auf mobile Seiten)
  4. mit Bestätigung (Pseudo-Weiterleitung auf mobile Seite mit Bestätigung)
  5. mit PHP (serverseitige Redirects mit PHP)
  6. per htaccess (mit mod_alias und mod_rewrite)
  7. mit mod_rewrite (weitere Beispiele von Weiterleitungen per htaccess)
  8. URL-Rewriting (Umschreibung von URLs mit oder ohne QueryStrings)
  9. Weiterleitung statt 404 (... bei fehlerhaften Aufrufen oder von alten URLs)

Beispiele von Weiterleitungen mit mod_rewrite

Nach der kleinen Einführung, der Vorstellung des Apache Moduls mod_rewrite und zwei Beispielen für das Definieren einer Standard-Domain auf der vorausgehenden Seite, möchten wir auf dieser Seite weitere Beispiele für serverseitige Weiterleitungen mit Hilfe von mod_rewrite vorstellen.

Im ersten Beispiel sollen alle Aufrufe von www.alte-domain.de, unabhängig davon ob die Eingabe mit oder ohne www. erfolgte, auf www.neue-domain.de umgeleitet werden. Der Teilausdruck www. wird dazu geklammert, wobei der Klammer ein Fragezeichen folgt. Das Fragezeichen bedeutet in diesem Fall, dass eine URL mit www. beginnen kann aber nicht beginnen muss.

Erstes Beispiel:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www\.)?alte-domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.neue-domain.de/$1 [R=301,L]

Im zweiten Beispiel sollen nur alle Aufrufe von www.alte-domain.de auf www.neue-domain.de umgeleitet werden. Erfolgte jedoch ein Aufruf von alte-domain.de ohne www., so soll keine Weiterleitung erfolgen.

Zweites Beispiel:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.alte-domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.neue-domain.de/$1 [L,R=301]

Im dritten Beispiel sollen nur Aufrufe von alte-domain.de auf www.neue-domain.de umgeleitet werden. Bei einem Aufruf von www.alte-domain.de soll hingegen keine Weiterleitung erfolgen.

Drittes Beispiel:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^alte-domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.neue-domain.de/$1 [L,R=301]

Im vierten Beispiel sollen Aufrufe von www.example.net/shop/ auf www.example.net weitergeleitet werden, wobei alle Verzeichnisse, Unterseiten und QueryStrings mit übernommen werden.

Viertes Beispiel:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
RewriteRule ^shop/(.*)$ http://www.example.net/$1 [L,R=301]

Im fünften Beispiel werden alle Aufrufe von www.example.net/shop/ auf www.example.net weitergeleitet werden, wobei alle Verzeichnisse und Unterseiten, jedoch keine QueryStrings übernommen werden. Die Übernahme von QueryStrings wird durch ein abschließendes Fragezeichen verhindert.   

Fünftes Beispiel:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
RewriteRule ^shop/(.*)$ http://www.example.net/$1? [L,R=301]

Im sechsten Beispiel werden alle Aufrufe von www.example.net/forum/ auf www.example.net weitergeleitet, wobei keine Verzeichnisse, Unterseiten und QueryStrings übernommen werden. Um ein Abhängen von Pfad und QueryString zu erreichen, genügt es den mit Hilfe des geklammerten Teilmusters (.*)  gefundenen und in $ gespeicherten Pfad nicht mit $1 zu übernehmen und  durch ein abschließendes Fragezeichen die Übernahme des QueryStrings zu unterbinden.

Sechstes Beispiel:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
RewriteRule ^forum/(.*)$ http://www.example.net/? [L,R=301]

Das fünfte und sechste Beispiel lässt sich vereinfachen, wenn keine Weiterleitung auf eine andere Domain oder keine Unterscheidung zwischen einzelnen Domains erfoderlich ist. Die Weiterleitung erfolgt dabei aufs Stammverzeichnis (Root).

Varianten für das fünfte und sechste Beispiel:

RewriteEngine on

RewriteRule ^forum/(.*)$ /$1? [L,R=301]

RewriteEngine on

RewriteRule ^forum/.*$ /? [L,R=301]

Diese vereinfachten Varianten lassen sich gut mit Bedingungen kombinieren, zum Beispiel wenn ein QueryString nur dann abgehängt werden soll, wenn dieser den Parameter "themen" enthält.

In Kombination mit einer Bedingung:

RewriteEngine on

RewriteCond %{QUERY_STRING} ^.*themen.*$
RewriteRule ^forum/(.*)$ /$1? [L,R=301]


Im siebenten Beispiel sollen alle Aufrufe von www.example.net/shop/ zu www.example.net weitergeleitet werden, jedoch nur wenn ein QueryString vorhanden ist, der den Parameter "artikel" enthält.

Siebentes Beispiel:

RewriteEngine on

RewriteCond %{QUERY_STRING} ^.*artikel.*$ [NC]
RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
RewriteRule ^shop/(.*)$ http://www.example.com/$1 [L,R=301]

Das achte Beispiel enthält ähnliche Konditionen (Bedingungen) wie das siebente Beispiel, mit dem großen Unterschied, das keine Aufrufe von URLs weitergeleitet werden sollen, wenn im QueryString der Parameter "artikel" oder "news" enthalten ist.

Achtes Beispiel:

RewriteEngine on

RewriteCond %{QUERY_STRING} !^.*(artikel|news).*$ [NC]
RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
RewriteRule ^shop/(.*)$ http://www.example.com/$1 [L,R=301]

Im neunten Beispiel soll nur die Seite news.html von www.example.net auf www.example.com weitergeleitet werden.

Neuntes Beispiel:

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/news\.html$
RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

Im zehnten Beispiel sollen alle Seiten außer artikel.html und news.html von www.example.net auf www.example.com weitergeleitet werden.

Zehntes Beispiel:

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/(artikel|news)\.html$
RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

Mit dem elften Beispiel sollen nur ausgesuchte User Agents auf eine nur für diese User Agents vorgesehene Seite umgeleitet werden. Eine zusätzliche Bedingung (im Beispiel HTTP_HOST) ist erforderlich, um eine Endlosschleife zu verhindern. Ohne diese zweite Bedingung würde die erste Bedingung auch nach der ersten Weiterleitung erfüllt, wodurch die Weiterleitung stetig neu aufgerufen wird.

Elftes Beispiel:

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} ^.*boeser_Bot.*$ [NC]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.net/fuer-boese-bots.html? [L,R=301]

Im zwölften Beispiel wird nur die alte-seite-168.html auf die neue-seite-168.html weitergeleitet, wobei es sich um eine beliebige Zahl handeln kann. Die Angabe der Domain ist nicht erforderlich, falls kein Wechsel des Hosts oder der Domain erfolgen soll.

Zwölftes Beispiel:

RewriteEngine on

RewriteRule ^alte-seite-([0-9]+)\.html$ /neue-seite-$1.html [L,R=301]

Wenn eine Seite oder alle Seiten eines Projektes nur schönere oder sprechende URLs erhalten sollen, bedarf es oftmals keiner Weiterleitung, sondern lediglich einer Umschreibung der URLs. Dazu auf der nächsten Seite mehr.

Browser-Weiterleitungen | Auf mobile Seiten | Serverseitige « / » prechende URLs

 
Navigation

Finden und
gefunden werden ...


Zukunftsaussichten


- Optimierung -

 

Webcoding

Übersicht


Web Services


Tutorials &
diverse Listings

und vieles mehr...


Copyright © 2006 - Verlag Horst Müller - Stendal | Datenschutz | Nutzungsbedingungen