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 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.
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.
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:
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!
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]
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/">
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" );
Gebruik de onderstaande code:
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.jouwsite.nl /"
%>
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>
Gebruik de onderstaande code:
<%
response.setStatus(301);
response.setHeader( "Location", "http://www.jouwsite.nl /" );
response.setHeader( "Connection", "close" );
%>
Gebruik de onderstaande code:
$q = new CGI;
print $q->redirect(" http://www.jouwsite.nl / ");
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/
Dit is een heel mooi artikel, bookmarked!
Compliment !
Ton van Houten
Online Succes
(zal hem op onze linkpagina plaatsen)
Mooie vertaling van de website:
Inderdaad Steef, op ons oude blog stond de verwijzing hier nog bij maar dit is ergens verdwenen met het omzetten. Bedankt voor je melding!
Bedankt, dit is een van de betere artikelen op internet net over 301
@Jan: Dank je wel voor je reactie. Het artikel is in ieder geval redelijk compleet :)
[...] 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. [...]
[...] 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 [...]
[...] 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. [...]
Heel goed en bruikbaar artikel, keep on the good work!
[...] 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 [...]
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?
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…
@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
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!
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?
[...] 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 [...]
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
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.
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?
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?
Lees onze: online marketing kennisbank

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