Hey... Jeg har skiftet min side mobiltbredbandguide.dk til en anden server, hvilket er fint nok. Problemet er at google er begyndt at indekserer min side helt forkert, nemlig unoeuros (hvor den er hostet) interne adresse, så min side i nogle af googles links hedder mobiltbredbandguide.dk.linux14.unoeuro.com - og det er jo ikke så godt..... Hvordan laver jeg en mod_rewrite og htacess fil som laver en 301 fra mobiltbredbandguide.dk.linux14.unoeuro.com til mobiltbredbandguide.dk ? Jeg har googlet løs, men er lidt usikker på det, og har ikke lyst til at dumme mig :) |
Jeg har testet, og det her skulle virke i .htaccess -- hvis din Apache har mod_rewrite, selvfølgelig:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^mobiltbredbandguide\.dk$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*) http://mobiltbredbandguide.dk/$1 [L,R=301]
Det er lidt anderledes end det man googler frem i Apache-dokumentationen, på to punkter:
- Mønsteret i RewriteRule starter ikke med /, det skal det kun hvis man sætter reglerne ind i server-konfigurationen i httpd.conf
- Man skal bruge R=301 (Moved Permanently) for at fortælle GoogleBot at man ikke prøver at køre den samme site på to domænenavne -- ellers bliver man straffet. Det burde også få browseren til at cache den rigtige side bedre.
Sidste finesse er at hvis der er rewrite-regler i underkataloger, bliver de kørt først -- og hvis de har flag L (last), kommer turen aldrig til din domæneændringsregel. Du kan så også sætte domæneændringsreglen ind før den anden regel i .htaccess i underkataloget -- den kører kun en gang og lader den næste regel komme til når domænet er rigtigt -- men i det tilfælde skal du sætte underkatalogstien ind i RewriteRule før /$1, for den er pillet af når reglen ser URL'en.
Der var ingen der sagde at mod_rewrite var let at forstå, var der?