HTTP-Statuscode 301 Moved Permanently

Der HTTP Statuscode 301 wird benutzt um ein altes Webdokument auf ein neues permanent zu verweisen. Dies ist beispielsweise für Umleitungen von http auf https zu empfehlen. Eine Webseite die ohne SSL auf mit SSL umgeleitet wird. In der SEO Welt ist diese Umleitung wichtig und wird auch bei Umleitungen von alten Dokumenten bzw Ordnern auf ein aktuelles Webdokument benutzt. Bei Relaunches von Webseiten sollte immer geprüft werden, ob ein 301 Redirect Sinnvoll ist. 

Auf der Seite 301.Tips findet ihr Informationen um Webseiten per 301 über die .htaccess umzuleiten. 

umleitung Bild

Die Ultimative htaccess - Ein Beispiel

Eine typische htaccess könnte so aussehen:

##### RewriteEngine eingeschaltet - Dies ist zwingend notwendig um per 301 umzuleiten
RewriteEngine On
##### 

##### RewriteBase set - empfohlene Einstellung
RewriteBase /
##### 

##### HTTP nach  HTTPS Umleiten
##Da HSTS erwünscht ist, sollte immer zuerst auf die SSL Variante umgeleitet werden um unsichere Verbindungen zu vermeiden
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://301.tips%{REQUEST_URI} [L,R=301]

##### Welche Dateien zuerst geladen werden sollen, kann hier definiert werden, in dem Beispiel soll die index.php zuerst geladen werden und nicht die index.html
DirectoryIndex index.php index.html

##### Sehr wichtig ist auch das Directory Listing auszuschalten, falls der Hoster das angestellt hat. Dadurch wird verhindert das auf Daten zugegriffen werden kann zb bei Ordnern
IndexIgnore *
Options -Indexes


##### 301 umleitung um index.php auf / umzuleiten - ganz einfach gesagt um doppelten Inhalt zu vermeiden
RewriteCond %{THE_REQUEST} !^POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
RewriteRule ^index\.php$ http%2://301.tips/ [R=301,L]

##### um www auf ohne www per 301 umzuleiten sollte das benutzt werden:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
#####

## HSTS Header HTTP_Strict_Transport_Security - HSTS einschalten
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000" env=HTTPS
</IfModule>

Weitere Informationen zur Htaccess und andere Status Codes

Weitere Informationen zur htaccess und Tricks findet ihr auf den weiteren Seiten. Auch im Hinblick von Web Sicherheit kann einiges mit Regeln gemacht werden. Auf 301.Tips erhaltet ihr natürlich auch weitere Informationen zu anderen Status Codes wie 302 ( Zeitlich begrenzte Umleitung - Moved Temporaly ), 404 ( nicht gefunden - not found ) und auch Serverfehler. Ein paar Tipps aus der Praxis von mod Rewrite mit Beispielen findet ihr auf den weiteren Seiten.