301 Redirect til WWW

15-05-2009 | Kommentarer til artiklen 10 kommentarer


En vigtig ting man bør overveje før man publicerer sin hjemmeside er om siden skal hedde http://hjemmeside.dk eller http://www.hjemmeside.dk – Altså med eller uden www?
Det har nemlig sin vigtighed i SEO.

Forestil dig at nogle af dine besøgende linker til din side med www foran domænet mens andre linker til din side UDEN www.
Det betyder for dig, at din hjemmeside ikke får den samlede værdi af alle disse links. Hvorfor? Fordi de rent faktisk ligger 2 forskellige steder. WWW er et subdomæne – det betyder strengt taget, at det ikke nødvendigvis er den samme hjemmeside der ligger der.

Det kan løses med en permanent 301 redirect. Det fortæller Google, at al værdi fra ét link skal overføres til et nyt. Den samlede værdi af links til http://hjemmeside.dk skal overføres til http://www.hjemmeside.dk. Det er god søgemaskineoptimering.
 

Ok, men hvordan?

Det kan gøres i både koden og på serveren.
Har man adgang til at logge på sin server og administrere den, så vil jeg foreslå at man gør det den vej.
Det kræver grundlæggende kendskab til server-opsætning, så lad vær hvis du ikke er nogenlunde sikker på det, og få istedet en anden til det.

På Windows server - IIS
1) Åbn Internet Information Services Manager
2) Tilføj et nyt website. F.eks med beskrivelsen "Hjemmeside redirect"
3) Tilføj host-headeren hjemmeside.dk til websitet og klik "Ok". (se billede 1)
4) Under fanebladet "Home directory", sæt hak i "A redirection to a URL", og sæt redirect-adressen til http://www.hjemmeside.dk/$S$Q (Se billede 2)
Attributterne i slutningen af adressen fortæller serveren at den skal redirecte til den sti på hjemmesiden, som brugeren har indtastet. Dvs at hvis man indtaster http://hjemmeside.dk/billige-biler, vil serveren redirecte til den tilsvarende sti på www. Altså http://www.hjemmeside.dk/billige-biler.

5) Sæt hak i "The exact URL entered above" og "A permanent redirection for this ressource", så siden bliver 301 redirected.
(Se billede 2)



Billede 1


Billede 2


Herefter skal du bare sørge for at den originale hjemmeside ligger med host-headeren www.hjemmeside.dk og peger ned i den mappe, hvor din hjemmeside ligger.

Alle der indtaster http://hjemmeside.dk vil nu blive redirected til http://www.hjemmeside.dk på et splitsekund.

.htaccess redirect

På linux servere er det nemt at opnå.
Du kan blot modificere din .htaccess fil der ligger i roden af dit website til at redirecte brugeren.
Her er koden du skal indsætte i .htaccess.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^hjemmeside.dk [NC]
RewriteRule ^(.*)$ http://www.hjemmeside.dk/$1 [R=301, NC]


Rimelig lige til.

Attributten NC betyder at værdierne i http_post skal sammenlignes uden at være case-sensitive. NC betyder "Not case-sensitive"

R=301 sættes for at lave 301 permanent redirect.

Note: Synes du det er mere passende at adressen altid skal stå UDEN www, ændres RewriteCond bare til www.hjemmeside.dk, og rewriteRule ændres til http://hjemmeside.dk.
 

ASP.NET kode til redirect

Her på bloggen har jeg ikke mulighed for at lege med servere, da hjemmesiden er hosted hos en almindelig webhost. Alligevel redirecter alle requests på http://l4u.dk til www.
Det er altså ordnet i koden, og her er der flere måder at gøre det på.

Eksempel 1 (VB)

Try
If Not Left(Split(Request.Url.ToString, "/")(2), 3).ToString = "www" Then
Response.Status = "301 Moved Permanently"
Response.AddHeader("Location", "http://www.hjemmeside.dk" & Request.RawUrl & "")
End If
Catch ex As Exception
'log err
End Try


C#

{
    try {
        if (!(Strings.Left(Strings.Split(Request.Url.ToString, "/")(2), 3).ToString == "www")) {
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", "http://www.hjemmeside.dk" + Request.RawUrl + "");
        }
    }
    catch (Exception ex) {
    }
    //log err
}


Koden checker om der står www i starten. Gør der ikke det, redirecter den til www.
Koden står i en try/catch for at undgå fejl i arrayet.
 

Kommentarer

#1
29-08-2009
Jesper
Jesper skrev:

Hej
Hvor indsætter jeg htacces koden for redirect fra www til uden - har prøvet med htacces på min server vil ikke gemme den ?
Mvh
Jesper

DirectoryIndex index.php

# Prevent 404 error if exists one of virtual folders below
Options -MultiViews

SetEnvIfNoCase Cookie no-cache no-cache
Header add Pragma no-cache env=no-cache
Header add Cache-control no-cache env=no-cache
Header set Expires: "01 Jan 1970 00:00:00 UT" env=no-cache

# SEO URL rewritings
RewriteEngine On
RewriteBase /
RewriteRule ^admin$ - [L]
RewriteRule ^admin/.*$ - [L]

RewriteRule ^(download/[0-9]+/.*)$ - [F,L]

# lang part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^([a-z][a-z])/(.*)$ $2?%1&langfromurl=$1&url=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-z][a-z])/(.*)$ $2?langfromurl=$1&url=$2 [L]



RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^(review/.+\.html)$ product_reviews.php?url=$1&%1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(review/.+\.html)$ product_reviews.php?url=$1 [L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^(review_info/.+\.html)$ product_reviews_info.php?url=$1&%1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(review_info/.+\.html)$ product_reviews_info.php?url=$1 [L]



RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^(.+\.html)$ product_info.php?url=$1&%1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+\.html)$ product_info.php?url=$1 [L]

# redirect from ?manufacturers_id=23 to manufacturers/23/
RewriteCond %{QUERY_STRING} manufacturers_id=([0-9]+)
RewriteRule ^$ manufacturers/%1/? [L,R=permanent]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^(manufacturers/.+/)$ index.php?is_man=1&url=$1&%1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(manufacturers/.+/)$ index.php?is_man=1&url=$1 [L]



RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^(.+/)$ index.php?url=$1&%1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+/)$ index.php?url=$1 [L]

# Redirecting to a random ?zzz parameter (force no-caching when needed)
RewriteCond %{HTTP_COOKIE} no-cache
RewriteCond %{QUERY_STRING} !^zzz
RewriteRule (.*) $1?zzz=%{TIME} [R,QSA]



#2
29-08-2009
Kasper Lau
Kasper Lau skrev:

Eksemplet i denne artikel laver rewrite fra domæne.dk til www.domæne.dk - altså modsat det du efterspørger.

Jeg fandt lige den her side, hvor du kan se en betingelse for den redirect du mangler:
http://kb.mediatemple.net/questions/242/How+do+I+redirect+my+site+using+a+.htaccess+file%3F

Jeg lader det være sagt... Jeg er ikke den store ørn i PHP, men det betyder vel ikke det store hvor kodestumpen er indsat?



#3
31-08-2009
kasper to
kasper to skrev:

hvordan laver jeg en redict fra en undermappe til en ny hovedside?

ex: jeressider.dk/minside/

hvor minside er mappeindholdet minside/index.html der nu skal ligge selvstændigt på nettet på sitet:
minside.dk



#4
31-08-2009
Kasper
Kasper skrev:

Hej kasper to,

Der skal du nok se lidt mere på artiklen om "almindelig redirect" her: http://www.l4u.dk/seo-guides/redirect-301.aspx

Det er svært at svare på dit spørgsmål uden mere info om programmerings-sprog osv.



#5
31-08-2009
kasper to
kasper to skrev:

Jeg troede jeg havde spurgt simpelt nok men prøver lige igen. Beklager min ringe formuleringsevne:-)I virkeligheden tror jeg slet ikke der er et svar for google selv vil ikke redirecte med mindre det er fra rodniveau til rodniveau. Men jeg omformulerer så vidt muligt.
Jeg har en side hos et firma der gratis hoster min side. Den ligger som underdomæne. Nu vil de nedlægge deres service og jeg vil oprette indholdet fra min gratis side som domæne. Jeg kan ikke få index.php (redirect 301) til at virke fra underdomænet.
Jeg laver alt i frontpage undtagen php og asp som jeg bare laver i txt filer og omdøber i ftp-programmet.



#6
01-09-2009
Kasper
Kasper skrev:

Hej igen :)
Ok, der burde ikke være det store hokus pokus i det. En 301 redirect fra din gamle side til den nye, burde klare det. Hvorfor du ikke kan få 301 redirect til at fungere, kan jeg ikke lige svare på.

Det må jo næsten være php-koden der ikke afvikler korrekt. Følgende kode i din index.php burde gøre det for dig.

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.din-nye-hjemmeside.dk/";);
?>

Hvis du ikke allerede har gjort det, kan du også forsøge at foretage adresse-ændringen via Google's webmaster tools.


Edit: Det gik ikke så godt med kode + smileys, men håber du fangede essensen ;)



#7
01-09-2009
kasper to
kasper to skrev:

Hæ hæ, nej jeg bemærkede også godt at smileys ikke er det bedste at putte ind hvis man lige vil bevare overblikket(smiley)
Jeg fandt en stump som jeg har puttet ind som index.html og ændret title og body:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Redirect 301</title>
<meta http-equiv="REFRESH"
content="0;url=http://min-ny-side"></HEAD>;
<BODY>
Redirect 301
</BODY>
</HTML>

jeg ved godt det er naivt men det var det bedste jeg lige kunne finde.

Den kode du skrev ser spændende ud men jeg tror ikke lige jeg kan kopiere den. Kan du skrive den igen med ordet "ditlink" istedet for et rigtigt link som jeg så kan erstatte med mit rigtige link?

Jeg kan ikke foretage adresseændring via Google's webmasterværktøjer fordi: "Indstillingen er begrænset til domæner på rodniveau", "Dit nye websted må ikke være et underdomæne", "Dit oprindelige websted må ikke være et underdomæne", alle citater fra google's webmaster tools.
Det er ellers lige det der er tilfældet.



#8
01-09-2009
Kasper
Kasper skrev:

Njah, meta redirect er ikke det optimale, men hvis det er den eneste vej uden om, så må det jo være sådan.
Var ikke klar over, at Google ikke tillod en flytning som den du gerne vil have. Surt show :/

PHP koden igen:
Erstat 'ditlink' med det link du gerne vil redirecte til.

<?php
header("HTTP/1.1 301 Moved Permanently" );
header("Location: ditlink" );
?>



#9
02-09-2009
kasper to
kasper to skrev:

Den havde jeg prøvet i forvejen og den virker bare slet ikke:_(
Tak for din tid og forsøg på at hjælpe!



#10
03-09-2009
Kasper
Kasper skrev:

Du er velkommen :)
En skam det ikke lykkedes :/




Skriv en kommentar... Jeg ved du har lyst...

Navn: *



Evt hjemmeside:



Email adresse: *



Kommentar: *


Gem indlæg

L4U Media v. Jonas Nielsen  |  Søgemaskineoptimering og Webdesign  |  8000 Aarhus C  |  Tlf: 22 12 32 20  |  SEO blog  |  sitemap  |  kontakt