Fik en mail her til aften om hvordan jeg redirecter http://martin-nielsen.com til WWW udgave, svaret kommer her.
Mange websites svarer i dag både på http://www.domæne.dk og http://domæne.dk – dette er selvfølgelig også godt nok fra et brugersynspunkt – brugeren kommer ind lige gyldigt hvad. Set fra dit synspunkt kan der dog være problemer rent SEO mæssigt.
Derfor er det vigtigt at tage stilling til om dit domæne skal virke med eller uden WWW og derefter 301 redirecte modparten til det rigtige. Dette kan vi nemt gøre på Apache webserveren med mod_rewrite:
Med WWW
1 2 3 4 5 |
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www.domæne.dk$ [NC] RewriteRule ^(.*)$ http://www.domæne.dk/$1 [R=301,L] |
Her sender vi alt som ikke starter med www videre til www.domæne.dk/osv/osv
Uden WWW
1 2 3 4 5 |
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.domæne.dk$ [NC] RewriteRule ^(.*)$ http://domæne.dk/$1 [R=301,L] |
Her sender vi alt som starter med www videre til domæne.dk/osv/osv
Ønsker du ikke at tvinge WWW og Har du DNS sat op således at dit domæne svarer på alt foran domænenavnet (stjerne alias) – vil det være en god ide at redirecte alt som ikke starter med domænenavn.dk, da du ellers kan få en masse problemer med duplicate content:
1 2 3 4 5 |
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^domæne.dk$ [NC] RewriteRule ^(.*)$ http://domæne.dk/$1 [R=301,L] |
Her på sitet har jeg valgt at tvinge brugen af WWW, selvom det teknisk set er dybt forkert at bruge WWW, idet alt foran domænenavnet anses som værende et subdomæne. Grunden til dette er, at langt de fleste mennesker tror WWW er krævet, og vil fx til enhver tid linke til dit website med WWW, også selvom du har gjort dit for at tvinge siden til at køre uden WWW.
Håber dette lille tip kan hjælpe.
Hey Martin
Endnu engang et interessant indlæg fra en teknisk vinkel. Thumbs up. Der skrives ofte om hvor skidt det er for dit SEO arbejde både at bruge http://www.* og http://*, men det er sjældent man får reelle forslag til at ændre det.
Jesper Jarlskov
Glad for du har det sådan – forsøger netop at holde det mest praktisk her på bloggen (når det er muligt) – for som du selv siger er der masser teori rundt omkring!
Super lækkert lavet, Martin!
Jeg har implementeret det på en blog jeg er ved at bygge og det virker perfekt, men kun på forsiden
Hvis man f.eks. går ind på http://jacobworsoe.dk så bliver man redirected til http://www.jacobworsoe.dk.
Men hvis man går ind på en underside, f.eks: http://jacobworsoe.dk/overskrift-til-indlaegget-12/ så bliver man redirected til: http://www.jacobworsoe.dk/post.php/?id=12
Jeg bruger mod_rewrite til at lave pæne url’s med. Kan det laves, så den også kan redirecte undersiderne?
Min .htaccess ser således ud:
Nåh, det var ikke det hele der kom med. Prøver lige at smide koden på pastebin istedet:
http://pastebin.com/m46a1f9a6
@Jacob hvis du blot flytter din WWW redirect over den anden burde det virke
Link til seneste blogindlæg: Anmeldelse af Paranormal Activity
Martin: 1000 tak, nu virker det perfekt! Du har sku styr på dit shit
Link til seneste blogindlæg: Kør en test på tværs af dit website
Så lidt glad for at kunne hjælpe – og beklager det sene svar, notifikationen var blevet slugt af mit spamfilter
Du kan forresten godt samle de to RewriteEngine On under en så du har det hele samlet og ikke behøver ha forskellige RewriteBase osv, så er det bare altid en god ide at slutte med [L] (last rule)
Og forresten, din blog er røget i favoritterne, glædeligt med nye blogge omkring split tests – kan man aldrig få nok af!
Link til seneste blogindlæg: Anmeldelse af Paranormal Activity
Fedt du gider hjælpe og tak for roserne for bloggen – det bliver spændende at komme igang med at skrive
Min endelige kode ser således ud:
http://pastebin.com/m5e443a4a
Så jeg burde faktisk flyttet det [L] ned i bunden til den sidste rule? Men scriptet virker nu fint nok, så den stopper da ikke når den ser et [L] ligesom f.eks. exit() i PHP?
Link til seneste blogindlæg: Kør en test på tværs af dit website
Ah nej ikke som exit(),
det var faktisk præcis som du har gjort jeg mente
[L] indikerer bare at det er den sidste der skal udføres udfra fx de rewriteconds du har, dvs her rewriter den først til www – og først efter rewriten rewriter den så igen, uden L vil den kalde udføre alle rewriterules som passer på det nuværende request
Okay, på den måde. Tak for opklaringen
Link til seneste blogindlæg: Kør en test på tværs af dit website
Ovre hos mig bruger jeg forresten denne linje til at undgå at der kommer flere — efter hinanden i URL’en…
// Convert multiple — to –
$link = preg_replace(“#-{2,}#”, “-“, $link);
Hvis jeg må tillade mig at foreslå det, f.eks. i dette indlæg
Link til seneste blogindlæg: Kør en test på tværs af dit website
Du har ret det skal selvfølgelig rettes, og det er det hermed blevet – takker, har faktisk slet ikke lagt mærke til det.
Heldigvis har jeg bygget hele bloggen så den slags rettelser automatisk får 301 redirects i forhold til de gamle stier – så det er jo nemt og elegant
Link til seneste blogindlæg: Anmeldelse af Paranormal Activity
Smart… Vil du afsløre hvordan det er lavet?
Link til seneste blogindlæg: Kør en test på tværs af dit website
Det er faktisk lavet ganske simpelt, hver gang blog indlæg vises tjekkes url mod en korrekt generet url og hvis disse to er forskellige redirectes blot til den korrekte url fra PHP
Link til seneste blogindlæg: Anmeldelse af Paranormal Activity
Ja, det lyder da rimelig simpelt
Må jeg prøve at se koden du ordner det med?
Link til seneste blogindlæg: Kør en test på tværs af dit website