Omdirigera med 301 redirect

Vad är en 301 redirect och varför ska man göra det?

Google rekommenderar att man gör en så kallad 301 redirect om man flyttar en sida på Internet till en annan plats.

301 redirect är en omdirigering som sker på servernivå. Siffran 301 är en HTTP-statuskod som betyder flyttad permanent. 302 betyder flyttad temporärt. Det finns verktyg, där du kan se vilken HTTP-statuskod din sida ger.

Vid en 301 redirect förstår Google att sidan har flyttats och rankning och länkkraft överförs till en viss del.

Användning av JavaScript eller META-refresh är inte att rekommendera. Det kan få negativa påföljder för din webbplats i sökmotorer.

Allt annat skall undvikas (meta-refresh, java-redirect, 302 redirect etc).

Om det inte finns tillgång till varken .htaccess eller något serverskript så är det rekommenderade valet att skriva en text för besökare (be dem uppdatera länkar och bokmärken) och en stor länk till vart sidan har flyttats.

Tips!

Jag jobbar med en nysatsning för SEO-forum.se, se gärna Därför är SEO-forum.se så bra och värd din tid

Hur man gör en 301 redirect för en enskild fil

301 redirect med .htaccess:

Redirect 301 /gammal/gammal.html http://www.ny-url.se/ny.html
301 redirect med .htaccess, annan lösning vid mer problematiska fall:

RewriteRule ^gammal\.html$ http://www.ny-url.se/ny.html [R=301,L]
301 redirect för en enskild fil med hjälp av PHP:

<?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Status: 301 Moved Permanently" );
header( "Location: http://www.ny-url.se/" );
exit(0);
?>
301 redirect med ASP:

<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.ny-url.se/"
%>
301 redirect med ColdFusion:

<cfheader statuscode="301" statustext="Moved permanently">
<cfheader name="Location" value="http://www.ny-url.se/">
301 redirect med ASP.NET:

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.ny-url.se/");
}
</script>
301 redirect med JSP/JAVA:

<%
response.setStatus(301);
response.setHeader( "Location", "http://www.ny-url.se/" );
response.setHeader( "Connection", "close" );
%>
301 redirect med CGI/PERL:

$q = new CGI;
print $q->redirect(" http://www.ny-url.se/ ");
301 redirect med Ruby/Ruby on Rails:

def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.ny-url.se/"
end

Omdirigera vid en flytt av domän

Har du flyttat din sajt till en annan domän?

Så här gör du en 301 redirect med hjälp av .htaccess.

Redirecta allt från gammal domän till startsidan på den nya domänen:

Redirect 301 / http://www.ny-domän.se/
Redirecta allt från gammal domän till samma filnamn den nya domänen:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.ny-domän.se/$1 [R=301,L]

Omdirigera till med eller utan www

Även om man nu förtiden kan ställa in i Googles verktyg för webbansvariga om man ska visa med eller utan www i ens domännamn rekommenderar jag att man redirectar detta själv på servernivå.

Positiva effekter med en www-redirect:

Personligen rekommenderar jag att ha med www eftersom personer mest länkar naturligt till den versionen.

Sätt att utföra det:

Utan www till www med .htaccess:

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.|$) [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Med www till utan www med .htaccess:

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST}//s%{HTTPS} ^www\.(.*)//((s)on|s.*)$ [NC]
RewriteRule ^ http%3://%1%{REQUEST_URI} [L,R=301]
Utan www till www med PHP:

<?php
if ($_SERVER["HTTP_HOST"] == "dindomän.se") {
    Header("HTTP/1.1 301 Moved Permanently"); 
    Header("Location: http://www.dindomän.se".$_SERVER['REQUEST_URI']);
    die();
}
?>
Med www till utan www med PHP:

<?php
if ($_SERVER["HTTP_HOST"] == "www.dindomän.se") {
    Header("HTTP/1.1 301 Moved Permanently"); 
    Header("Location: http://dindomän.se".$_SERVER['REQUEST_URI']);
    die();
}
?>
Utan www till www Med ASP:

<%
If InStr(Request.ServerVariables("SERVER_NAME"),"www") = 0 Then
    Response.Status="301 Moved Permanently"
    Response.AddHeader "Location","http://www."
        & Request.ServerVariables("HTTP_HOST")
        & Request.ServerVariables("REQUEST_URI")
    Response.End
End if
%>

Se även till att du själv länkar till rätt version både i din sajt, i din sitemap.xml och i din PPC.

Omdirigera /index.php eller /index.html till /

Ingen vits med att ha flera URLer till startsidan. Detta fungerar även på underkataloger.

Med .htaccess:

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html)\ HTTP
RewriteRule ^(.*)index\.(php|html)$ /$1 [R=301,L]

Omdirigera till nya filnamn

Har du bytat från .html till .php? (koden bytar allt, kontrollera att allt funkar igen)

Med .htaccess:

RedirectMatch 301 (.*)\.html$ http://www.exampel.se$1.php

Omdirigera en mapp

Redirecta bara själva mappen till en ny mapp:

Redirect 301 /exempelmapp/ http://www.exempel.se/nymapp/
Redirecta allt i mappen exempelmapp till filen /exempel.php

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^exempelmapp(.*)$ /exempel.php [L,R=301]
Redirecta alla filer i mappen gammalmapp till en ny domän

RedirectMatch 301 ^/gammlmapp/(.+)$ http://www.nydomän.se/$1
Redirecta alla filer i mappen gammalmapp till en ny mapp på valfri domän

RedirectMatch 301 ^/gammlmapp/(.+)$ http://www.exempel.se/nymapp/$1

Omdirigera till och från SSL

Från http till https:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Från https till http:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Omdirigera allt i domän till subdomän

Med .htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domän\.se
RewriteCond %{REQUEST_URI} -d
RewriteRule .* http://sub.domän.se%{REQUEST_URI} [L,R=301]

Omdirigera allt i subdomän till domän

Med .htaccess:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST}//s%{HTTPS} ^subdomän\.(.*)//((s)on|s.*)$ [NC]
RewriteRule ^ http%3://%1%{REQUEST_URI} [L,R=301]

Omdirigera från dynamiska till statiska URLer

Detta görs med mod_rewrite i .htaccess. Se artikeln Guide till URL-manipulering med mod_rewrite

Från /?page=article&id=34 till /artikel34.html

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^page=article&id=([0-9]+)
RewriteRule ^(.*)$ http://%{HTTP_HOST}/artikel%1.html? [R=301,L]

Omdirigera från Wordpress.com till egenhostad Wordpress

Att vidarebofordra en blogg från Wordpress.com till en blogg med din egna domän är trixigt. Men läs och följ instruktionerna från detta dokument (via här).


Mer läsning / källor

Fråga / diskutera på SEO-forum.se

I denna tråden eller som en ny tråd i sektionen Allmän SEO-information.

Denna sida senast uppdaterad: 26 Oct 2011
Skriven av
Feedback uppskattas.