088 - 120 34 00

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

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

Stel nu dat je 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. Zoekmachines als Google en Bing hebben echter de oude URL’s in hun index opgenomen en sturen bezoekers naar die inmiddels verwijderde of gewijzigde pagina’s toe. Hoe voorkom je dat bezoekers via oude links op een gewijzigde pagina binnen komen en vervolgens een ‘404 not found’ foutmelding te zien krijgen?

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 de bezoeker niet alleen automatisch doorstuurt (dat doet de zogenaamde ‘302 redirect’ ook), maar dit ook op een veilige wijze doet, zonder dat je bang hoeft te zijn voor penalty’s 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 cliënt (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 als lezer vooral gaan om de techniek. Daar gaan we in dit artikel verder op in!

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.

Verschil tussen 301 en 302 redirect:
301 redirect: permanente verwijzing. Verwijst bezoekers en zoekmachines door naar nieuwe URL.
De opgebouwde waarde van de inkomende links wordt overgezet naar de nieuwe URL.

302 redirect: tijdelijke verwijzing. De zoekmachines gaan er van uit dat de oorspronkelijke pagina op korte termijn weer zal werken. De waarde van de inkomende links blijft gekoppeld aan de oorspronkelijke URL.

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

Wanneer iemand naar jouw site linkt, doen ze dat niet altijd op precies die wijze die jouw 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 kan je 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 oorspronkelijk geschreven door Steven Hargrove en vertaald door Ramon.

Stel vrijblijvend een vraag aan één van onze Consultants