Online Marketing bij Onetomarket

11
Dec
2008

Slim redirecten met de 301-redirect: .htaccess, PHP, ASP en andere manieren

auteur: Ramon Eijkemans in Kennisbank

Iedere website wordt – in meerdere of mindere mate – geüpdate, gewijzigd en er worden zelfs hele pagina’s of domeinen verwijderd.

Stel nu dat uw website volledig vernieuwd is. De bestandsnamen zijn veranderd (bijv. van index.html naar index.php), etc. Dit is natuurlijk fantastisch: een website moet continu verbeterd worden! Maar wat als u af wil van de oude pagina’s zonder dat u zich zorgen wil maken over mensen die links naar de oude pagina’s volgen om vervolgens op een ’404 not found’ foutmelding terecht te komen? Dat is nog niet alles, zoekmachines als Google en Yahoo en MSN hebben wellicht de oude urls in hun index opgenomen en sturen bezoekers naar die inmiddels verwijderde pagina’s toe…

De 301 redirect

De beste manier om die pagina’s te redirecten is met de zogenaamde ’301 redirect’. Wat deze 301 redirect doet, is het automatisch doorsturen naar een nieuwe pagina wanneer het opgeroepen wordt. Dit maakt de 301 redirect de beste, omdat het niet alleen automatisch doorstuurt (dat doet de zogenaamde ’302 redirect ook), maar het doet dit ook veilig, zonder dat je bang hoeft te zijn voor penalties van de zoekmachines.

Heel specifiek gesproken vertelt de 301 redirect de browser of de zoekmachine dat de opgevraagde pagina verhuisd is en het stuurt de client (browser of search engine) automatisch door naar het nieuwe adres. Het vertelt ze, in mensentaal: ‘Hey, deze pagina is verhuisd en hier het nieuwe adres!’.

Het zal de jou, de lezer vooral gaan om de techniek, dus daar gaan we nu mee verder. Hieronder vind je verscheidene methoden om een 301 redirect te gebruiken: PHP, ASP, ASP.NET, JSP (JAVA), IIS, ColdFusion, CGI/PERL en tenslotte met .htaccess. De krachtigste techniek betreft gebruikmaking van de zogenaamde apache mod_rewrite module in httpd.conf of .htaccess.

Met HTML of Javascript redirecten

Je wil weten hoe je met HTML of Javascript moet redirecten? Heel simpel: NIET DOEN!
In het verleden is de zogenaamde ‘meta-tag refresh redirection’ methode vaak misbruikt met als doel om te SPAMmen. Het resultaat hiervan is dat gebruik hiervan afgestraft wordt door de zoekmachines. Niet gebruiken dus.

301 Redirecten met .htaccess

Het grote voordeel van het gebruik van .htaccess is dat redirects op een meta-niveau geregeld kunnen worden. In tegenstelling tot bij de genoemde programmeertalen kan met een .htaccess een gehele directory geredirect worden.

Het werkt als volgt:

  1. maak een bestand aan, genaamd ‘.htaccess’ (let op punt in het begin!) en plaats deze in de root van de website;
  2. open het .htaccess bestand in een code-editor (ikzelf gebruik BBEdit op mijn Mac en Notepad++ op Windows)voeg de volgende regels toe aan het .htaccess bestand:

Redirect 301 /oud/oud.html http://www.jouwsite.nl/nieuw.html

Let op: het eerste deel van de statement betreft het pad van het oude bestand VANAF de top level van de site (dus zonder ‘http://www’). Let er ook op dat er één spatie staat tussen deze elementen:

redirect 301 (de instructie dat de pagina permanent verhuisd is)
/oud/oud.html (het oude relatieve pad en naam)
http://www.jij.nl/nieuw.html (nieuwe complete pad en naam)

Let ook op dat het niet verplicht is om pagina’s te redirecten naar een nieuwe domeinnaam. Binnen een domein kan dit ook!

301 Redirecten met Mod_Rewrite

Met mod_rewrite, een module van de Apache webserver, is er nog veel meer mogelijk op redirect gebied. Dit is een ontzettend krachtige module waar reguliere expressies gebruikt worden om bijvoorbeeld redirects dynamisch af te vangen. Hieronder toon ik een nuttig voorbeeld.

Wanneer iemand naar uw site linkt, doen ze dat niet altijd op precies die wijze die uw voorkeur heeft. Als iemand linkt naar http://www.jouwsite.nl en iemand anders linkt naar http://jouwsite.nl, dan zal Google voor iedere url een aparte pagerank toekennen. Ja, dat is onhandig, maar het is ook waar. Met de code hieronder kunt u dat aanpassen. Overigens, diegenen die in Google webmaster central gebruik maken van sitemaps, kunnen onder het ‘preferred domain’ submenu aangeven of ze liever hebben dat Google de www-variant of de www-loze variant van hun website indexeert.

RewriteEngine On
rewritecond %{http_host} ^jouwsite.nl
rewriteRule ^(.*) http://www.jouwsite.nl/$1 [R=301,L]

301 Redirecten met IIS

  1. Gebruik in Internet Services Manager de rechtermuisknop om de map te kiezen die geredirect moet worden;
  2. selecteer de radio button die zegt ‘a redirection to a URL’;
  3. vul de pagina in waarnaartoe geredirect gaat worden;
  4. Check ‘The exact url entered above’ en ‘A permanent redirection for this resource’;
  5. Klik op ‘Apply’.

301 Redirecten met ColdFusion

Bij de meeste server-side scripting en programmeertalen is het gebruik van 301-redirect vrij eenvoudig.

In Coldfusion werkt het als volgt:

<cfheader statuscode="301" statustext="Moved permanently">
<cfheader name="Location" value="http://www.jouwsite.nl/">

301 Redirecten met PHP

Gebruik de onderstaande code:

<?php
header( "Status: 301 Moved Permanently" );
header( "Location: http://www.jouwsite.nl/" );
exit(0); // dit is optioneel, maar wordt wel aangeraden. Hiermee voorkom je onnodige output
?>

p.s.: de Microsoft server IIS crasht als je de volgende (veelgebruikte) regel gebruikt:

header( "HTTP/1.1 301 Moved Permanently" );

301 Redirecten met ASP

Gebruik de onderstaande code:

<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.jouwsite.nl /"
%>

301 Redirecten met ASP.NET

Gebruik de onderstaande code:

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.jouwsite.nl /");
}
</script>

301 Redirecten met JSP/JAVA

Gebruik de onderstaande code:

<%
response.setStatus(301);
response.setHeader( "Location", "http://www.jouwsite.nl /" );
response.setHeader( "Connection", "close" );
%>

301 Redirecten met CGI/PERL

Gebruik de onderstaande code:

$q = new CGI;
print $q->redirect(" http://www.jouwsite.nl / ");

301 Redirecten met Ruby/Ruby on Rails

Gebruik de onderstaande code:

def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.jouwsite.nl/"
end

Een disclaimer: wij hebben deze technieken in de praktijk gebruikt en vonden de werking ervan bevredigend. er zijn echter 567897653 manieren waarop het mis kan gaan. Gebruik deze technieken derhalve op eigen risico! Dit artikel is vertaald door Ramon en komt van http://www.stevenhargrove.com/redirect-web-pages/

Ramon Eijkemans

Over Ramon Eijkemans

Sr. SEO consultant bij Onetomarket, periode mei 2006 - januari 2009
meer reacties Plaats uw reactie!

34 reacties to “Slim redirecten met de 301-redirect: .htaccess, PHP, ASP en andere manieren”

  • Reactie van Navin Poeran op 15 December 2008 at 06:58

    Dit is een heel mooi artikel, bookmarked!

  • Reactie van website-intranet.nl op 22 January 2009 at 20:21

    Compliment !

    Ton van Houten
    Online Succes

    (zal hem op onze linkpagina plaatsen)

  • Reactie van steef op 10 February 2009 at 13:08

    Mooie vertaling van de website:

    http://www.stevenhargrove.com/redirect-web-pages/

  • Reactie van Roy Huiskes op 10 February 2009 at 16:14

    Inderdaad Steef, op ons oude blog stond de verwijzing hier nog bij maar dit is ergens verdwenen met het omzetten. Bedankt voor je melding!

  • Reactie van Jan schouten op 16 February 2009 at 15:19

    Bedankt, dit is een van de betere artikelen op internet net over 301

  • Reactie van Erik-Jan Bulthuis op 16 February 2009 at 15:44

    @Jan: Dank je wel voor je reactie. Het artikel is in ieder geval redelijk compleet :)

  • Reactie van Zoekmachine optimalisatie voor financiele dienstverleners? op 17 February 2009 at 11:06

    [...] hier profiteert http://www.ingbank.nl nauwelijks van.  Door één domein te gebruiken en de rest met een 301 redirect naar dit domein door te sturen, wordt de linkwaarde van alle inkomende links op één domein gezet. [...]

  • Reactie van Vincent Kouters » Overstap van Drupal 5 naar Wordpress 2: migratieproblemen op 14 March 2009 at 14:58

    [...] over te zetten, was het nodig om in een .htaccess bestand voor ieder bericht in een zogenaamd ‘301 redirect statement’ te voorzien. Omdat een weblog als dit zijn meeste verkeer haalt uit Google-zoekopdrachten en [...]

  • Reactie van LV: Website op één pagina? op 20 April 2009 at 10:35

    [...] Wanneer ik nu zoek in Google op site:www.sharpdesign.nl zie ik alle oude pagina’s terugkomen. Wanneer ik dan op deze resultaten klik krijg ik een 404-error. Dit is uiteraard niet goed! Hoe je een oude pagina moet omleiden leer je hier: 301 redirect Onetomarket blog. [...]

  • Reactie van Lieven - Xtence op 5 May 2009 at 15:21

    Heel goed en bruikbaar artikel, keep on the good work!

  • Reactie van Redirects: ook binnen uw site zijn ze belangrijk! – Onetomarket op 24 June 2009 at 10:18

    [...] bedoeld was doorstuurt naar uw nieuwe adres. Met websites is het niets anders. Door middel van een 301 redirect vertelt u zowel zoekmachines als gebruikers dat uw website verhuisd is en waar ze de nieuwe kunnen [...]

  • Reactie van Teddop op 20 July 2009 at 10:02

    Beste allemaal,
    wanneer ik mijn .htaccess bestand upload dan gebeurd er niets? Kan het zijn dat dit enige tijd duurt of moet het resultaat direct zichtbaar zijn?

    Eerst heb ik een .htaccess bestand gemaakt met .txt erachter, daarna geupload en toen . txt weggehaald, kan dit kloppen?

  • Reactie van Arnoud op 2 August 2009 at 14:43

    Handig artikel, tnx!
    Is er ook een handige manier om 1000+ url’s om te zetten? Ik ben bezig met m’n weblogs van Blogger naar WordPress over te zetten en bij een van de weblogs heb ik bijna 4000 berichten…

  • Reactie van Erik-Jan Bulthuis op 13 August 2009 at 20:35

    @Teddop: Je werkwijze klopt (qua .txt weghalen). De vraag is alleen of jouw server .htaccess ondersteunt? Heb je een Apache server?

    #Arnoud: In .htaccess kun je reguliere expressies gebruiken. Check anders Google even: http://www.google.nl/search?q=regexp+htaccess&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:nl:official&client=firefox-a

  • Reactie van Tino op 14 August 2009 at 09:51

    Misschien een stomme vraag, maar heb tot nu toe nog nergens het antwoord kunnen vinden: is hetvolgende mogelijk met een 301 redirect?

    User gaat naar http://www.domein1.com, maar wordt doorgestuurd naar http://www.domein2.com. Ik wil echter in de browser het domein2.com niet zichtbaar maken, de URL moet http://www.domein1.com blijven.

    Bedankt!

  • Reactie van Roy Huiskes op 14 August 2009 at 10:56

    Hey Tino,

    Wat jij wilt kan wel via allerlei omwegen. Het probleem is dat het zo nagenoeg onzichtbaar wordt voor gebruikers op welk domein ze zich nu bevinden, dit kan nogal onveilige situaties opleveren bijv. met HTTPS of SSL.

    Mocht je dit toch willen zou je je site kunnen inframen, maar dit is voor zoekmachines weer een probleem.

    Wat is precies het doel wat je wilt bereiken?

  • Reactie van AD.nl laat de post niet bezorgen na een verhuizing - chapter42.com.com op 5 October 2009 at 23:24

    [...] adres’ daar heeft de TNT ook iets voor, zo’n verhuisservice… net zoiets als een 301 redirect. Als project manager heb je dan in ieder geval behoorlijk gefaald.Related posts:Waarom je niet [...]

  • Reactie van Jan Seurinck op 1 December 2009 at 10:10

    Hallo Ramon of andere lezers,

    Is het mogelijk om in de 301 .htaccess-manier van werken een uitzondering in te bouwen voor een map? In mijn geval de /lists/ van PHPlist?

    Jan

  • Reactie van martin op 1 December 2009 at 11:06

    Beste Jan,

    Dat is prima mogelijk. Je kan elke URL apart, bepaalde mappen of een compleet domein redirecten.
    Als je een beetje handig bent met reguliere expressies is er veel mogelijk.

  • Reactie van Gert op 14 January 2010 at 12:43

    Ik heb in de .htaccess een redirect staan zoals

    Redirect 301 /index.php http://www.domein.nl/home/index.php

    Echter nu worden de subdomeinen ook doorgestuurd naar http://www.domein.nl/home/index.php
    Dit komt door de slash voor de index.php. Als ik deze echter weghaal, werkt de redirect niet meer. Hebben jullie een oplossing wellicht?

  • Reactie van Robert Koops | Alconon op 7 February 2010 at 21:13

    Ik zoek me wezenloos. Ik zit met het probleem dat ik mijn wordpress site http://www.alconon.nl wil omzetten naar gewoon html. De site staat klaar maar ik kan met geen mogelijkheid de omleidingen instellen.

    Google geeft aardig wat urls op “alconon” die wil ik graag redirecten.

    Weet iemand raad?

  • Reactie van Alvin op 15 March 2010 at 20:26

    Heel mooi artikel , ik kreeg eerst de 301 in php niet aan het werk , nu eindelijk gelukt!

    Weet iemand misschien hoe ik zoekmachinevriendelijk mijn andere domeinen kan doorsturen naar mijn hoofddomein maar wel de domeinnaam laten staan in de adresbalk?

    Bedankt alvast!

  • Reactie van AD.nl laat de post niet bezorgen na een verhuizing - chapter42.com op 15 April 2010 at 01:58

    [...] adres’ daar heeft de TNT ook iets voor, zo’n verhuisservice… net zoiets als een 301 redirect. Als project manager heb je dan in ieder geval behoorlijk [...]

  • Reactie van Joris op 15 April 2010 at 23:15

    Enkele geïndexeerde sub-domeinen heb ik sinds enkele dagen door gestuurd d.m.v. .htaccess 301 redirect. heeft iemand enig idee hoelang het duurt voordat Google deze 301 redirects verwerkt en dus verwijderd uit de index?

  • Reactie van Tom Dekker op 29 April 2010 at 14:25

    Bedankt! Ik kan aan de slag!

  • Reactie van Peter Paul op 16 June 2010 at 17:57

    ik zoek mij wezeloos om een redirect te doen naar een intranet pagina volgens http://httpd.apache.org/docs/1.3/misc/rewriteguide.html Retrieve DATA from intranet zou het mogelijk zijn, maar ik krijg een internal server error..
    voorbeeldje op de pagina is ook te moeilijk te begrijpen met al die variabelen :( Kan iemand mij helpen?

  • Reactie van Aad op 5 August 2010 at 22:24

    Ik zit met hetzelfde probleem als Gert. Helaas heeft nog niemand een oplossing gepost, daarom plaats ik de oproep van Gert nog maar een keer:
    Reactie van Gert op 14 January 2010 at 12:43
    Ik heb in de .htaccess een redirect staan zoals

    Redirect 301 /index.php http://www.domein.nl/home/index.php

    Echter nu worden de subdomeinen ook doorgestuurd naar http://www.domein.nl/home/index.php
    Dit komt door de slash voor de index.php. Als ik deze echter weghaal, werkt de redirect niet meer. Hebben jullie een oplossing wellicht?

  • Reactie van Sander Tamaëla op 6 August 2010 at 10:12

    @Aad:

    Je kan dit voorkomen door het volgende te doen (wel ander stukje code dan de Redirect 301 die in het artikel gebruikt wordt):

    RewriteCond %{HTTP_HOST} ^www\.domein\.nl$ [NC]
    RewriteRule ^/index.php http://www.domein.nl/home/index.php [R=301,L]

    Op deze manier wordt de redirect alleen uitgevoerd als het om www gaat (let wel, heb de code zoals hierboven niet getest, maar verwacht dat het zo direct werkt).

  • Reactie van Aad op 6 August 2010 at 10:59

    @Sander;

    Bedank! Ik ben er mee aan de slag gegaan maar krijg nog niet het gewenste resultaat.

    Wat wil ik precies:

    In de ROOT heb ik WordPress 3.0 staan als multiuser. Met wildcard DNS dus geschikt voor subdomeinen. In een aparte map in de ROOT draait een directory.

    Nu wil ik dat bezoekers aan http://www.mijn-site.nl geredirect worden naar http://mijn-site.nl en dat die vervolgens geredirect worden naar http://mijn-site.nl/directory/.

    Dit is mij tot nu toe welgelukt maar dan worden ook de subdomeinen (van WordPress) zoals http://voorbeeld.mijn-site.nl geredirect naar de directory en dat is nou juist niet de bedoeling.

    Heb je misschien nog een oplossing?

  • Reactie van Sander Tamaëla op 6 August 2010 at 13:42

    @Aad:

    Je zult met RewriteCond aan de gang moeten gaan om aan te geven dat het alleen om een bepaalde URL gaat:
    RewriteCond %{HTTP_HOST} ^www\.mijn-site\.nl$ [NC] — in het geval van de eerste redirect
    RewriteCond %{HTTP_HOST} ^mijn-site\.nl$ [NC] — voor de tweede

    Waarbij je nog specifiek kan specificeren dat een bepaalde URL niet geldt voor de onderstaande redirect:
    RewriteCond %{HTTP_HOST} !^www\.mijn-site\.nl$ [NC] — geen www

    Dit doe je zoals je hierboven ziet met een “!”.

    Hoop dat je daarmee verder komt.

  • Reactie van Aad op 6 August 2010 at 15:27

    Wederom bedankt Sander, ik ga er nu meteen mee aan de slag.

  • Reactie van Aad op 10 August 2010 at 09:27

    @Sander en andere belangstellenden:

    Na uitproberen en combineren van van vele suggesties, waaronder die van Sander, heb ik met de onderstaande code mijn doel berijkt:

    RewriteEngine On

    RewriteCond %{REQUEST_URI} !/wp-login.php
    RewriteCond %{REQUEST_URI} !/wp-admin/
    RewriteCond %{http_host} ^mijn-site.nl

    RewriteRule (.*) http://mijn-site.nl/directory/$1 [R=301,L]

    RewriteCond %{HTTP_HOST} !^wp-login.php$ [NC]
    RewriteCond %{HTTP_HOST} !^wp-admin/$ [NC]

    # compress all text & html:
    AddOutputFilterByType DEFLATE text/html text/plain text/xml

    # uploaded files
    RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ – [L]
    RewriteRule . index.php [L]

  • Reactie van knutselen op 12 August 2010 at 21:45

    Jeetje, wat een hoop manieren om te re-directen. Kan het ook met html?

  • Reactie van Sander Tamaëla op 12 August 2010 at 23:10

    Nee, in HTML (Meta redirects) of JavaScript kan je bezoekers doorsturen, maar zoekmachines reageren hier niet op. Het is daarom niet aan te raden dit te gebruiken.

Reageer!

Naam (verplicht)
E-mail (wordt niet getoond) (verplicht)
Website


Abonneer op onze nieuwsbrief

Wij delen uw e-mail adres niet met derden. We houden u op de hoogte op gebied van online marketing

Onetomarket op Facebook

Recente Artikelen

Categorieën

Kennisbank

Gebruikersproblemen op het internet

Van Deursen en Van Dijk (2009) hebben onderzocht welke problemen mensen ondervinden bij het gebruik van internet. Daarnaast hebben ze o.a. gekeken in welke mate leeftijd en opleidingsniveau invloed hebben op de problemen bij internet gebruik. Dit artikel is een samenvatting van de het uitgevoerde onderzoek.
meer informatie

Redirects: ook binnen uw site zijn ze belangrijk!

Redirects zijn belangrijk. Als u uw site gaat verhuizen van het ene naar een ander domein is het uitermate belangrijk om redirects te plaatsen. Maar redirects zijn ook belangrijk binnen uw site zelf. Wat gebeurt er met een pagina als een product verwijderd wordt of als ik de titel van mijn blog verander? Op deze [...]
meer informatie

404′s voorkomen in 7 stappen

Wat doet u als u een '404 Not Found' foutmelding krijgt op een website? Klikt u meteen weg? Gaat u op zoek naar de juiste pagina? Neemt u contact op met de webmaster? De meeste mensen klikken weg. Hun eerste bezoek aan de site was ook hun laatste. In dit artikel zal ik aan de hand van een eenvoudig stappenplan uitleggen hoe u, webmaster, c.q. marketeer, dit kunt voorkomen. Tevens zal ik enkele tips geven over hoe een nadeel juist een voordeel kan worden: een 404-pagina kan met succes ingezet worden in het verkoopproces van uw website!
meer informatie

Lees onze: online marketing kennisbank

Why work with us?

Met meer dan 10 jaar ervaring op het gebied van online marketing is Onetomarket een ervaren strategische partner met:

  • ervaren consultants die graag kennis met u delen
  • campagnes voor vele sectoren en international
  • accreditaties door Google, Yahoo!, Omniture en Microsoft
  • een focus op resultaatgedreven samenwerking
  • een meedenkend en oplossingsgerichte aanpak
  • innovatieve plannen en scherp in beoordelen van kansen
Get in contact with one of our