Redirects kan vara en djungel för många. Jag ska försöka förklara lite om de olika redirects som finns och vilka man ska undvika och vad som är korrekt.
En redirect är i korthet något som gör att om du går till en sida så blir du automatiskt vidareskickad till en annan sida.
De redirects du bör undvika:
Meta-refresh
Meta-refresh kan antingen användas till att bara ladda om sidan automatiskt eller att skicka vidare användare till en annan sida. Meta-refresh koden placeras inom <head> taggen.
Place inside <head> to refresh page after 5 seconds:
<meta http-equiv="refresh" content="5" />
Redirect to http://www.example.com/ after 5 seconds:
<meta http-equiv="refresh" content="5;url=http://www.example.com/" />
Redirect to http://www.example.com/ immediately:
<meta http-equiv="refresh" content="0;url=http://www.example.com/" />
Meta-refresh bör man undvika och endast använda som sista utväg om inget annat går. Dock så har Google och Yahoo gått ut och sagt att de accepterar en meta-refresh med 0 i delay som en 301 men de rekommenderar det inte.
Javascript
Sökmotorer har svårigheter att tolka javascript. Enough said.
302-redirect
302-redirect betyder tillfällig flytt. Därav så för den inte med sig någon av de länkarna eller kraften som originalsidan har.
Bra redirects!
301-redirects
301-redirects är det man ska använda. Det betyder permanent flytt och tar med sig all kraft från länkar och all pagerank osv. från ursprungssidan.
Här nedan följer några exempel på 301-redirects i olika kodspråk.
.htaccess
En fil kallad .htaccess kan läggas i roten av en hemsida, om webbservern är Apache. Denna kan innehålla diverse inställningar som url-omskrivning, åtkomstskydd och redirects. För att göra en 301 Redirect i en .htaccess-fil kan man göra så här:
Denna skickar vidare alla besökare till http://www.example.se, om de inte gått dit direkt.
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.example.se$ [NC]
RewriteRule ^(.*)$ http://www.example.se/$1 [L,R=301]
Denna skickar vidare alla besökare från en viss undersida till en annan undersida med 301 redirect. Detta är väldigt användbart om kunden bytt system från t.ex html till php och man vill skicka vidare besökare/pagerank till den nya motsvarande sidan.
Options +FollowSymlinks
RewriteEngine on
redirect 301 /old/old.htm http://www.example.com/new.htm
Denna kod gör redirect från utan www till med www.
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^example.com [nc]
rewriterule ^(.*)$ http://www.example.com/$1 [r=301,nc]
Denna kod redirectar en domän antingen med www eller utan www till en annan domän. Praktiskt för att enkelt redirecta om kund har flera domänder för samma innehåll eller bara byter domän.
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?yourdomain\.com [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [R=301,L]
PHP
Via PHP kan man enkelt skicka vidare en besökare från en sida till en annan. Kom dock ihåg att man skall göra detta allra först, innan någon annan kod på sidan.
Utan www till med www
<?php if ($_SERVER['SERVER_NAME'] == 'example.se')
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.se');
}
?>
Vid flera domäner
<?php if($_SERVER['SERVER_NAME'] != 'www.example.se')
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.se');
}
?>
Med Querystring
<?php
if($_SERVER['SERVER_NAME'] != 'www.example.se') {
if($_SERVER['QUERY_STRING'] != "") {
$querystring = "?".$_SERVER['QUERY_STRING'];
}
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.se/'.$querystring);
}
?>
Från t.ex index.php till rotkatalogen/roten. OBS! Kan orsaka problem med webshoppar i Joomla!
if ($_SERVER["REQUEST_URI"] == "/ria/index.php")
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.k4l.se/ria/');
}
ASP VB
Via ASP kan man skicka en besökare från en sida till en annan på detta vis:
Enklaste metoden:
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "/new-page.asp"
%>
Enkel metod, utan path eller querystring:
<%@ Language=VBScript %>
<%
Dim hostname
hostname = request.servervariables("HTTP_HOST")
if hostname <> "www.example.se" then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.example.se"
Response.End
end if
%>
Avancerad metod, med path och querystring:
<%@ Language=VBScript %>
<%
Dim hostname
Dim pathinfo
Dim querystring
hostname = request.servervariables("HTTP_HOST")
pathinfo = request.servervariables("PATH_INFO")
querystring = request.servervariables("QUERY_STRING")
if querystring <> "" then
pathinfo = pathinfo & "?" & querystring
end if
if hostname <> "www.example.se" then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.example.se" & pathinfo
Response.End
end if
%>
ASP .NET (.aspx)
Från domän till annan domän
Koden nedan skickar vidare alla besökare till en annan domän automatiskt. I Code-behind:
protected void Page_Load(object sender, EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.new-url.com");
}
Från undersida till annan undersida
Koden nedan skickar vidare alla besökare till en annan domän när man går in på en viss undersida, i detta fallet för att undvika duplicate content mellan root ( / ) och default.aspx
if(Request.Url.ToString() == "http://example.se/default.aspx")
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", "http://www.example.se/");
}
Från icke www till www
OBS – Funktionen är otestad!
protected void Page_Load(object sender, EventArgs e)
{
if(!Request.Url.ToString().StartsWith("http://www"))
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", "http://www.twinthings.se");
}
}
CGI Perl
Information
Språkets webbplats: http://www.perl.com
$q = new CGI;
print $q->redirect("http://www.new-url.com/");
Coldfusion
Information
Språkets webbplats: http://plattform.vgc.nu/www.adobe.com/products/coldfusion
<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://www.new-url.com">
JSP
Information
Språkets webbplats: http://java.sun.com/products/jsp
<%
response.setStatus(301);
response.setHeader( "Location", "http://www.new-url.com/" );
response.setHeader( "Connection", "close" );
%>
RubyOnRails
Information
Språkets webbplats: http://www.rubyonrails.org
def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.new-url.com/"
end
IIS Server
Om ni skulle råka ha en Microsoft ISS server så kan ni bland annat inte använda .htaccess redirects utan måste göra inställningar i er kontrollpanel.
Detta hänvisar jag till en annan sida som går igenom detta:
http://www.mcanerin.com/EN/articles/301-redirect-IIS.asp
Happy redirecting! 
Besök även MediaAnalys andra bloggar. På MediaAnalys TV hittar du filmer och klipp som vi producerar om sökmotoroptimering och liknande. Om du vill veta mer om vilka resultat vi levererar till våra kunder rekommenderas MediaAnalys kundcase, där du får veta mer om hur en sökmotoroptimering kan påverka dina säljresultat.