.htaccess Anleitung – 301 Redirects und mehr

.htaccess ist wohl eine der wichtigsten Dateien für größere Projekte – sowohl aus SEO Sicht, als auch aus Usability Sicht. In dieser Anleitung möchte ich euch die wichtigsten Funktionen erklären und wie ihr sie auf euer Projekt anwenden könnt.

.htaccess – Was ist das überhaupt für eine Datei?

.htaccess steht für “Hypertext Access” und ist eine Konfigurationsdatei im Textformat (als ANSI formatiert). Durch sie werden Anweisungen an einen NSCA-kompatiblen Webserver wie zum Beispiel Apache weitergegeben. Die nützlichsten Funktionen der .htaccess sind sicherlich die 301- und 302 Weiterleitungen und die Weiterleitung auf eine eigene 404-Seite, auf die ich gleich genauer eingehen werden. Dazu befindet sich die .htaccess immer im obersten / Hauptverzeichnis, da die Anweisungen an die Unterverzeichnisse weitergegeben werden.

Redirects – Was ist der Unterschied zwischen einer 301- und 302 Weiterleitung?

301 Weiterleitung: “Die angeforderte Seite ist dauerhaft umgezogen”
302 Weiterleitung: “Die angeforderte Seite ist temporär umgezogen”

Der entscheidende Unterschied liegt im Bereich der Suchmaschinenoptimierung. Wenn zum Beispiel eine alte URL noch verlinkt ist und ein 404-Fehler auftritt, geht der Link-Juice größtenteils ins Leere. Mit einer 301 Weiterleitung kann der Link-Juice auf eine andere URL oder die Startseite vollständig übertragen werden und die alte URL wird aus dem Index der Suchmaschinen gestrichen.
Ganz anders bei der 302 Weiterleitung, denn hier bleibt der Link-Juice auf der alten URL, welche auch weiterhin im Index bleibt. Wenn ihr also eine gut besuchte Seite für ein paar Stunden bearbeiten und an ihr rumprobieren müsst, könnt ihr für die Zeite eine 302 Weiterleitung für eure User einrichten, damit sie nicht auf die kurzzeitige “Baustelle” gelangen. Eine Beeinträchtigung des Rankings im Sinne vom Link-Juice tritt hier also nicht auf.

Verschiedene Verwendungen einer 301 Weiterleitung

Bei meinen Verwendungsbeispielen gehe ich davon aus, dass ihr ModRewrite installiert habt. Wenn ihr WordPress nutzt, solltet ihr euch dort keine Sorgen machen. Geht also zuerst auf eurem FTP Server in euer / Hauptverzeichnis und legt dort eine neue Textdatei namens “.htaccess” an (der Punkt ist wichtig!), welche ihr mit dem standard Editor von Windows bearbeitet und im ANSI-Format abspeichert.
Um zunächst die ModRewrite Funktion zu aktivieren, startet ihr eure .htaccess mit:

RewriteEngine On

Danach definiert ihr gewisse Regeln mit dem Befehl “RewriteCond“.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.de$

Der Syntax für RewriteCond laut: RewriteCond Argument1 Argument2
%{HTTP_HOST} steht hier also für Servervariable HTTP_HOST. ^ und $ definieren den Anfang und das Ende des regulären Ausdrucks, also in diesem Fall das Hauptverzeichnis eurer Domain. Ein \ ist hier nötig, damit der Punkt auch als Punkt gelesen wird und nicht als Befehl.
Hier nun also ein paar praxisorientierte Beispiele:

301 Weiterleitung von http://domain.de auf http://www.domain.de

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.de$
RewriteRule ^http://www.domain.de$ [L,R=301]

Das “L” steht für “Last Rule” und stoppt nach dieser Anweisung den rewrite-Prozess, damit ein erneutes Überschreiben verhindert wird.
Das “R” steht für “Force Redirect” und erzwingt die 301 Weiterleitung. Wenn man das “=301″ weglässt, wird es zu einer 302 Weiterleitung.

301 Weiterleitung von http://www.domain.de auf http://domain.de

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.de$
RewriteRule ^http://domain.de$ [L,R=301]

301 Weiterleitung von alter URL ohne Inhalt auf Startseite

RewriteEngine On
Redirect 301 /alte-url http://domain.de

Statt http://domain.de könnt ihr natürlich auch einfach auf http://domain.de/neue-url verweisen.

404-error

Bessere Usability mit eigener 404 Fehlerseite

Eine 404 Fehlerseite entsteht, sobald eine URL nicht existiert. Ob sie vorher gelöscht wurde, sie nie existiert hat oder man sich vertippt hat spielt keine Rolle; man bekommt immer eine sehr simpel gestaltete 404 Fehlerseite vom Webserver. Ein “Schlag ins Gesicht” für den User und ein absolutes No-Go für die Usability. Mit folgendem Befehl könnt ihr auf eure eigene 404 Fehlerseite verweisen:

ErrorDocument 404 /404-seite.html

404-seite.html” ersetzt ihr hier natürlich mit dem entsprechenden Unterverzeichnis, in dem sich eure eigene 404 Seite befindet.
Damit ihr ein wenig Inspiration für eure 404 Seite bekommt, kann ich euch nur diese Liste empfehlen.

Weitere Fehlercodes und deren Befehle

Fehlercode 400: Bad Request – fehlerhafte Anfrage
Fehlercode 403: No Permission – kein Zugriffsrecht
Fehlercode 500: Internal Server Error – unerwarteter Serverfehler

Mit folgenden Befehlen könnt ihr auch für diese Fehler eigene Seiten einrichten:

ErrorDocument 400 /400-seite.html
ErrorDocument 403 /403-seite.html
ErrorDocument 500 /500-seite.html

Ich hoffe, ich konnte euch hiermit einen groben Einblick in die .htaccess bieten.


  • FixWort

    Hallo,
    ich habe mal gelesen, dass man in einer .htaccess auch einstellen kann, dass bestimmte webseiten keinen zugriff haben? Soll also heissen ich mag diese fiesen Seiten nicht die eine URL posten und dazu die Inhalte gleich mit. da stehen dann die metas komplett drin und das nervt wenn bei der suche nach einer eigenen domain 20 seiten vorkommen die nur die metas kopiert haben. kannst mir sagen wie ich das einstellen kann?

    • Kevin Ernst

      Hi!
      Ich glaube du möchtest einfach die Suchmaschinen daran hindern, dass sie auf bestimmte Inhalte deiner Seite zugreifen, oder? Dafür ist die robots.txt zuständig. In die schreibst du einfach:

      User-Agent: *

      Disallow: /verzeichnis/

      Damit dürfen die Suchmaschinen das eingegebene Verzeichnis nicht mehr crawlen. Sinvoll kann sowas z.B. für tags sein.
      Ich hoffe, das hilft dir weiter.

      • http://www.fixwort.de/ FixWort

        Hallo,

        nein leider nicht ganz. Ich möchte, dass z.B. diese Seite http://www.webwiki.de/fixwort.de nicht meine Metadaten ausliest. Und da gibt es nich schlimmere Seiten die komplette Inhalte auslesen und dann als ihre ausgeben.

        • Kevin Ernst

          Ah, okay. Ja, dann bist du bei der .htaccess richtig. Gebe dort einfach folgendes ein:

          order deny,allow

          deny from 46.4.207.66

          deny from .webwiki.de

          Mit der IP darf die Webseite nicht mehr auf deine zugreifen. Bei “deny from .webwiki.de” wird der Zugriff für jeden Host verboten, der darauf endet.
          Ich würde also einfach eine Liste dieser Seiten erstellen und dann alle mit “deny from .domain.de” sperren. Denk dran, dass vorher das “order deny,allow” stehen MUSS, sonst kann der Befehl nicht ausgeführt werden.

          • http://www.fixwort.de/ FixWort

            aha sehr nett von dir!!! genau das hatte ich gesucht danke dir!

          • http://www.fixwort.de/ FixWort

            also ich mache einfach so?

            order deny,allow
            deny from .seite.com
            deny from .seite2.com
            deny from .seite.com

            usw?
            LG Mary

          • Kevin Ernst

            Genau, so sollte es klappen. Freut mich, dass ich dir helfen konnte!
            Vielleicht wäre meine Seite ja auch passend für deine User in deinen “Webtipps” :)

          • http://www.fixwort.de/ FixWort

            Hallo,

            okay prima…. du kannst gerne deine Tipps auf http://www.online-workers.de posten alles offen für hilfreiche tipps. Ich werde auch gleich mal was posten zu deiner Seite Danke!!!