Denna artikel senast uppdaterad: 25 april 2014
Google rekommenderar att man gör en så kallad 301 redirect om man omdirigerar en sida.
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 (dock aldrig till 100%).
Allt annat skall undvikas (Meta-refresh, javascript, 302 redirect etc) vilket kan ge negativa påföljder i sökmotorer.
Om det inte finns tillgång till varken .htaccess, PHP eller annat 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. Ta då bort alla andra länkar på sidan för maximal effekt.
För 301 redirect med Nginx glöm inte att starta om Nginx för att se ändringarna:
service nginx restart
Jim Westergren har utvecklat Domainstats, en grym tjänst inom SEO där du kan se inlänkar med mera.
Se alltid till att en URL redirectas till sin mest relevanta nya URL.
Vanligaste misstagen som jag sett genom mina år som SEO-konsult:
Redirect 301 /gammal/gammal.html http://www.ny-url.se/ny.html
RewriteRule ^gammal.html$ http://www.ny-url.se/ny.html? [R=301,L]
location /felaktig-url {
return 301 http://exempel.se/korrekt-url;
}
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.ny-url.se/");
die();
?>
<?php
$url_redirection = array(
'http://www.seo-forum.se/' => '/index.php',
'https://www.seo-guide.se/svenska-seo-foretag' => '/showthread.php?t=4417',
'https://www.seo-guide.se/svenska-seo-foretag' => '/seo-konsulter-seo-foeretag/4417-lista-pa-svenska-seo-foeretag.html',
'http://www.seo-forum.se/member.php?u=384' => '/medlemmar/magnus.html',
'http://www.seo-forum.se/member.php?u=2' => '/medlemmar/marcus-westberg.html',
'http://www.seo-forum.se/member.php?u=5' => '/medlemmar/maccke.html',
'http://www.seo-forum.se/member.php?u=77' => '/medlemmar/urban-g.html',
'http://www.seo-forum.se/forumdisplay.php?f=58' => '/foermedling-av-seo-tjaenster/',
'http://www.seo-forum.se/forumdisplay.php?f=25' => '/nyheter/',
'http://www.seo-forum.se/forumdisplay.php?f=40' => '/allmaen-seo-info/',
'http://www.seo-forum.se/forumdisplay.php?f=26' => '/nyckelordsforskning-keyword-research/',
'http://www.seo-forum.se/forumdisplay.php?f=26' => '/nyckelordsforskning/',
'http://www.seo-forum.se/forumdisplay.php?f=27' => '/relevansoptimering-on-page/',
'http://www.seo-forum.se/forumdisplay.php?f=15' => '/seo-verktyg/',
'http://www.seo-forum.se/forumdisplay.php?f=15' => '/nyckelordsmaetning/',
'http://www.seo-forum.se/forumdisplay.php?f=15' => '/laenkpopularitetsmaetning/',
'http://www.seo-forum.se/showthread.php?t=4281' => '/30455-post1.html'
);
if (in_array($_SERVER['REQUEST_URI'], $url_redirection)) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".array_search($_SERVER['REQUEST_URI'], $url_redirection));
die();
}
?>
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.ny-url.se/"
%>
<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>
<%
response.setStatus(301);
response.setHeader( "Location", "http://www.ny-url.se/" );
response.setHeader( "Connection", "close" );
%>
$q = new CGI;
print $q->redirect(" http://www.ny-url.se/ ");
def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.ny-url.se/"
end
Har du flyttat din sajt till en annan domän?
Så här gör du en 301 redirect med hjälp av .htaccess (Apache).
Redirect 301 / http://www.ny-domän.se/
server {
server_name gammal.se www.gammal.se;
return 301 http://www.ny-domän.se;
}
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.ny-domän.se$1 [R=301,L]
server {
server_name gammal.se www.gammal.se;
return 301 http://www.ny-domän.se$request_uri;
}
<?php
if ($_SERVER['HTTP_HOST'] != 'www.ny.se') {
header('HTTP/1.1 301 Moved Permanently');
header("Location: http://www.ny.se".$_SERVER['REQUEST_URI']);
die();
}
?>
Ä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:
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.
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.|$) [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
server {
server_name exempel.se;
return 301 http://www.exempel.se$request_uri;
}
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST}//s%{HTTPS} ^www.(.*)//((s)on|s.*)$ [NC]
RewriteRule ^ http%3://%1%{REQUEST_URI} [L,R=301]
server {
server_name www.exempel.se;
return 301 http://exempel.se$request_uri;
}
<?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();
}
?>
<?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();
}
?>
<%
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
%>
Ingen vits med att ha flera URLer till startsidan och underkataloger.
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_METHOD} =GET
RewriteRule ^(.*)index.(php|html)$ /$1 [R=301,L]
Har du bytat från .html till .php (koden bytar allt, kontrollera att allt funkar igen)
RedirectMatch 301 (.*).html$ http://www.exampel.se$1.php
Redirect 301 /exempelmapp/ http://www.exempel.se/nymapp/
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^exempelmapp(.*)$ /exempel.php [L,R=301]
RedirectMatch 301 ^/gammlmapp/(.+)$ http://www.nydomän.se/$1
RedirectMatch 301 ^/gammlmapp/(.+)$ http://www.exempel.se/nymapp/$1
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
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]
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST}//s%{HTTPS} ^subdomän.(.*)//((s)on|s.*)$ [NC]
RewriteRule ^ http%3://%1%{REQUEST_URI} [L,R=301]
Jag känner endast till Glesys som stödjer detta.
Du skapar URL records på en HOST (@ vilket är root, www eller annan subdomän) och när DNS-cachen utgår så har du en 301 redirect på plats.
En mycket stor fördel med detta är att du enkelt kan lägga upp så att extra domäner (felstavningar, olika domändelser osv) 301 redirectas till din huvuddomän utan att behöva peka dessa domäner mot någon server eller webbhotell.
Rekommenderas inte när du vill redirecta till motsvarande URLer på annan domän eftersom du endast kan peka mot 1 URL. Samma sak om du vill redirecta med eller utan www och du redan har URLer från fel version indexerade i Google.
Detta görs med mod_rewrite i .htaccess. Se artikeln Guide till URL-manipulering med mod_rewrite
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^page=article&id=([0-9]+)
RewriteRule ^(.*)$ http://%{HTTP_HOST}/artikel%1.html? [R=301,L]
Alternativ 1: följ dessa officiella stegen från Wordpress.com.
Alternativ 2: läs och följ instruktionerna från detta dokument (via här). Obs: denna metod är från 2008. Meddela gärna om detta fortfarande fungerar.
I denna tråden.