post

Redirect subdomein naar root domein met .htaccess

Gisteravond op Twitter (volg mij @defries) deelde Ton Wesseling een goede tip, die ik overigens ook al eerder op Meet Dutchento had gehoord maar nog niet geïmplementeerd had. De tip is zo krachtig als eenvoudig:

Tip van de dag: check eens of jouw domeinnaam met ww.domein.nl of wwww.domein.nl wel werkt. Fout wordt veel gemaakt. En werkt domein.nl ook?

Het was nog niet helemaal bedtijd dus ik meende de daad bij de gedachte te voegen en deze oplossing te implementeren op een aantal domeinen. Mijn voorkeur was om dit op .htaccess niveau to doen maar daar liggen niet bepaald mijn skills. Daarbij komt dat ik een oplossing zocht die onafhankelijk van het betreffende subdomein ( ww of wwww ) altijd naar de root van het domein verwees. Een tweet terug naar Ton en veel hulp van Ton en Joost de Valk later was de oplossing daar.

RewriteCond %{HTTP_HOST} !^example.com$

RewriteRule (.*) http://example.com$1 [R=301,L]

De volgende code hoort in je .htaccess bestand te staan in de root van je subdomein en zorgt ervoor dat "“ mits example.com is vervangen door je eigen domein "“ de verkeerd ingetoetste domeinen altijd door verwijzen naar je feitelijke domein. Mocht je hoofddomein gebruik maken van de www gebruik dan de volgende code:

RewriteCond %{HTTP_HOST} !^example.com$

RewriteRule (.*) http://www.example.com$1 [R=301,L]

Reacties

  1. Roel Willems zegt:

    Kleine toevoeging voor mensen die gebruik willen maken van de Rewrite en het domein met www. willen weergeven.

    De redirect in de post geeft een redirect als de bezoeker niet via http://example.com op de website komt (bijvoorbeeld http://www.example.com). De URL wordt dan herschreven naar http://example.com.

    Wil je gebruik maken van www. toevoeging op je domein zoals: http://www.example.com dan dien je de Rewrite als volgt te gebruiken:

    RewriteCond %{HTTP_HOST} !^www.example.com$
    RewriteRule (.*) http://www.example.com$1 [R=301,L]

    De !^ geeft aan de webserver aan dat als de HTTP_HOST niet begint met de volgende reeks (in dit geval http://www.example.com) pas dan onderstaande regel toe (herschrijven naar http://www.example.com).

    Gebruik je een aantal subdomeinen en wil je toch de rewrite gebruiken dan kunnen de subdomeinen worden uitgesloten van de rewrite door de | (or functie). In de rewrite rule geef je dan aan dat als de url niet begint met (!^) www of ( | ) subdomein de rewrite toegepast moet worden. Voldoet de HTTP_HOST aan of www. of subdomein. dan wordt de rewrite niet toegepast.

    RewriteCond %{HTTP_HOST} !^(www|subdomein).example.com.nl$
    RewriteRule (.*) http://www.example.com$1 [R=301,L]

    Uiteraard kan je via deze methode ook meerdere subdomeinen uitgesloten worden van de rewrite door (www|subdomein1|subdomein2 ezv.).

  2. Super aanvulling Roel, ik had zelf ook al als extra de code toegevoegd wat je moet doen wanneer je inderdaad naar http://www.domein.nl wilt doorsturen

  3. Haan SEO zegt:

    Mooie techniek om je .htaccess mee aan te vullen. Op dergelijke manier kun je ook het index.php / index.html bestand rewriten en URLs met hoofdletters omschrijven naar kleine letters. Zie http://www.haan-seo.nl/blog/duplicate-htaccess/ voor meer .htaccess tips.

  4. De Fries

    Goeie tips en hoog in de Google ranking over .htaccess.

    Ik heb maar een klein begrijpertje op dit vlak. Wat is jullie idee over het combineren van een 301 en een 404?

    Met andere woorden is het mogelijk om als een request een 404 error geeft de aanvraag op je index te laten landen?

  5. Geinig Roel is ook aan het experimenteren met Thesis:-)

Laat wat van je horen

*