Pagerank behouden met 301 redirects in PHP, zonder .htaccess

Vorig jaar schreef ik een artikel over het behouden van pagerank middels een 301 redirect via .htaccess. Ik krijg hierover nog wel eens vragen. Soms werkt het niet en serveert de server alleen maar foutmeldingen. Dit komt op shared hosting vrij geregeld voor, omdat .htaccess bestanden daar niet toegestaan zijn. Op windows-servers is het voor zover ik weet zelfs onmogelijk.

Daar is gelukkig een oplossing voor: met de php header() functie is het ook mogelijk om te redirecten. Voor veel mensen zal dit zelfs makkelijker zijn.

Er zijn twee manieren:

<?php
header(“Location: nieuwepagina”, true,301);
?>

of:

<?php
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: nieuwepagina”);
header(“Connection: close”);
?>

Deze voorbeeldcode moet in de oude pagina worden geplaatst. Let op dat deze code helemaal bovenaan de pagina moet worden geplaatst, voordat de pagina ook maar enige output heeft gegenereerd. Als je dit niet doet krijg je een foutmelding met “headers already sent”. Om dit the omzeilen kun je de volgende code gebruiken:

<?php
// begin pagina
// ob_start gebruiken voor output buffering
ob_start();

// output
echo ‘output’;

// redirect
header(“Location: nieuwepagina”, true,301);

// einde pagina & output buffering
ob_end_flush();
?>

of:

<?php
// begin pagina
// ob_start gebruiken voor output buffering
ob_start();

// output
echo ‘output’;

// redirect
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: nieuwepagina”);
header(“Connection: close”);

// einde pagina & output buffering
ob_end_flush();
?>

Allebei werken ze, alleen schijnt de bovenste manier niet goed te werken in Internet Explorer 5.5 en lager. Mensen met IE5.5 krijgen een ‘page-not-found’ pagina. Voor de zoekmachines maakt dat niks uit.

Om te controleren of je 301 redirect ook daadwerkelijk werkt, kun je een server header checker gebruiken. Er zijn ook nog addons voor Internet Explorer en Firefox.



Geef hieronder je reactie