MediaAnalys Teknikblogg

Sökmotoroptimering och Internetmarknadsföring

MediaAnalys arbetar med sponsrade länkar och sökmotoroptimering (SEO). Genom sökoptimering och sökmarknadsföring hjälper vi företag som vill få nya kunder via Internet.

MediaAnalys – Redirects på rätt sätt.

Skrivet av Jonas i kategorin Sökmotoroptimeringstips

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! ;)

mars 3rd, 2010

Skriv en kommentar