Teil 3: Workshop: Redirect und Modrewrite
- Workshop: Redirect und Modrewrite
- Teil 2: Workshop: Redirect und Modrewrite
- Teil 3: Workshop: Redirect und Modrewrite
Statisch zu dynamisch Eine Webseite wächst mit der Zeit und irgendwann ist es nicht mehr möglich, nur allein mit statischen Seiten und ohne Content Management System (CMS) die Inhalte zu pflegen. Damit Ihren Besuchern jedoch nicht die Bookmarks verloren gehen oder die indizierten Seiten der Such...
Statisch zu dynamisch
Eine Webseite wächst mit der Zeit und irgendwann ist es nicht mehr möglich, nur allein mit statischen Seiten und ohne Content Management System (CMS) die Inhalte zu pflegen. Damit Ihren Besuchern jedoch nicht die Bookmarks verloren gehen oder die indizierten Seiten der Suchmaschinen nicht mehr zu finden sind, sollten Sie entsprechende Umleitungen definieren.
Viele CMS nutzen dynamische Seiten zur Generierung von Inhalten - diese sind dann wenig sprechend. Ihre statische Seite besaß die URL https://www.meineseite.de/fcb/oliverkahn und ist jetzt im CMS wiederzufinden unter https://www.meineseite.de/fcb/index.php?id=4711. Die Regel, welche den ersten Link auf den dynamisch generierten verweist, sieht folgendermaßen aus:
RewriteRule ^fcb/oliverkahn/$ /fcb/
index.php?id=4711 [NC,L]
An dieser Stelle sehen Sie auch den Einsatz der regulären Ausdrücke. Der Anfang einer URL oder eines Dateinamens wird durch ein ^ gekennzeichnet, der Abschluss durch ein Dollarzeichen $. Die Parameter am Ende des Befehls zeigen an, dass Groß- und Kleinschreibung zu ignorieren sind und es sich um den letzten Befehl handelt.
Überlagerungen vermeiden
Eine Reihe von CMS und Blogsystemen nutzen .htaccess zur Umleitung von Inhalten auf die passende Startseite. Die Einträge sehen dann folgendermaßen aus:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Alle Anfragen, die auf das entsprechende Verzeichnis kommen und nicht leer sind, werden auf die Datei index.php umgeleitet. Dies ist kein Problem, wenn Sie alle Inhalte über das CMS verwalten und auch aus der Vergangenheit keine weiteren RewriteRules, beispielsweise von statischen Inhalten, integriert haben. Ansonsten sollten Sie diese entsprechend vorher abfangen:
RewriteCond %{REQUEST_URI} ^/
(stats/?|missing\.html|failed_auth\.html) [NC]
RewriteRule .* - [L]
Kommt nun eine Anfrage auf eine Datei im Verzeichnis, die auch real existiert, so wird diese weitergereicht und angezeigt.
Subdomains eliminieren
Immer wieder kommt es vor, dass Inhalte aus Sub-Domains in die Hauptdomain zurückziehen oder Sie Ihre Webseiten-Struktur überarbeitet haben. Die folgende Regel erlaubt Ihnen die Umleitung von Subdomains, wie etwa warda.meineseite.de auf den Einstiegspunkt www.meineseite.de.
RewriteCond %{HTTP_HOST} ^(.*)
\.meineseite\.de$ [NC]
RewriteRule ^(.*)$ https://www.
meineseite.de
Die Einstiegsbedingung prüft, ob es sich auch wirklich um eine Anfrage auf eine Subdomain handelt und verweist entsprechend alle Anfragen auf die Startseite. Dabei wird die URL auf eine Zeichenkette gefolgt von einem Punkt vor meineseite.de untersucht.
Sollte es sich bei der Zeichenkette um www handeln, so ist dies auch kein Problem, denn dann sind der ursprüngliche Link und der ersetzte entsprechend gleich.
Weiterleitung auf CMS
Wenn Sie planen, ein CMS einzuführen und dies nicht im root-Verzeichnis speichern können, sondern ein Unterverzeichnis benötigen - im Beispiel cms -, sollten Sie für eine Weiterleitung mithilfe einer RewriteRule sorgen.
Prüfen Sie vorab, ob entweder direkt die URL, also https://www.meineseite.de oder die zugehörige Index-Datei aufgerufen wurde und leiten Sie diese ins entsprechende Verzeichnis um. Der Regel wird zusätzlich http-Code 301 mitgegeben, um zu signalisieren, dass die Inhalte dauerhaft umgezogen sind.
RewriteEngine On
RewriteCond %{RE
QUEST_URI} ^/$ [OR]
RewriteCond %{REQUEST_URI} ^/index\
.html$
RewriteRule ^.*$ https://www.meinesei
te.de/cms/ [R=301,L]
Weiterleitungen unterbinden
In manchen Fällen möchten Sie jedoch auch bewusst die Weiterleitung unterbinden. Dies kann beispielsweise dann der Fall sein, wenn Ihre Site überdurchschnittlich häufig von Crawlern besucht wird, die keiner Suchmaschine zuzuordnen sind. Dabei handelt es sich dann meist um Plagegeister, die auf die Reise geschickt wurden, um beispielsweise E-Mail-Adressen zu grabben.
Sie können die unwillkommenen Besucher entweder anhand der IP-Adresse identifizieren, von der sie kommen, oder mithilfe des angezeigten Namens. Die Bedingung samt Regel sieht dann wie folgt aus:
RewriteCond %{HTTP_USER_AGENT}
^.*SpamBot.*$
RewriteRule ^.* - [F]
Mithilfe der Servervariable HTTP_USER_AGENT wird die Quelle untersucht und anschließend der String ^.*SpamBot.*$ definiert. Dabei handelt es sich um eine URL - ^ zu Beginn und $ am Ende - die den Ausdruck SpamBot enthält und davor und dahinter beliebig viele Zeichen .* hat.
Die generierte Regel gilt für alle angefragten URLs, verweist ins Leere und generiert über den Parameter [F] einen Statuscode 403 (Forbidden) an den anfragenden Bot.