blogwebsites

404 errors na updaten permalinks in WordPress

Een van de plugins welke je moet hebben in je WordPress website, is de ‘Seo Ultimate’ plugin. Deze plugin helpt je website gevonden te worden op het grote internet.
Wat ook een heel sterk punt is van deze plugin, is dat deze de HTLM statuscode 404 errors voor je in de gaten houdt. Dat houdt in, dat je kunt zien welke pagina’s bezoekers ingetypt hadden (of in hun favorieten hebben staan), maar welke niet (meer) gevonden werden op je website.

Hoe kan het dat de pagina niet (meer) gevonden werd? Daar kun je een aantal redenen voor bedenken:

  • de bezoeker heeft een typfout gemaakt in de URL
  • jij hebt zelf de bewuste pagina verwijderd
  • een zoekmachine heeft een oude pagina in zijn geheugen (cache) staan welke niet meer bestaat
  • jij hebt ervoor gekozen om de permalinks in WordPress aan te passen

 

Op dat laatste punt ga ik in. Zo was ik mijn website begonnen met URL’s die begonnen met maand en naam: http://www.i2s.nl/2012/04/sample-post/
Later kreeg ik het idee dat het misschien mooier zou zijn, om de datum ertussenuit te halen. Toen had ik hem dus ingesteld via
Instellingen -> Permalinks: post naam – http://www.i2s.nl/sample-post/

Alles leuk en aardig, maar ik zag na verloop van tijd de meldingen toenemen van bezoekers die bepaalde pagina’s niet meer konden vinden op mijn website!
Dat klopt natuurlijk, want ik had de URL veranderd met de permalinks! Gelukkig kunnen wij de URL zelf manipuleren. Hierbij de truuk om het jaar en maand uit de URL te verwijderen met behulp van de module rewrite van Apache.

Open het .htaccess bestand dat in de root van je website staat. In dit bestand geven we de rewrite module van Apache de opdracht om URL’s welke jaar en maand bevatten, door te sturen naar een URL zonder jaar en maand. Daarbovenop geven we ook de statuscode 301 mee, zodat de browser (en zoekmachine bot) weet dat de pagina verplaatst is.

Zoals je ziet, hoef je alleen maar regel 8 extra toe te voegen. Op regel 7 heb ik wat extra commentaar geplaatst zodat ik voor mezelf weet wat de onderstaande regel doet, als ik op een ander moment dit bestand weer inkijk.

[crayon] # BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]

# de URLS had ik gewijzigd, nu doorsturen met een 301 – moved status code
RewriteRule ^[0-9]{4}/[0-9]{2}/(.*)$ /$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress
[/crayon]

0 Shares

Leave a Reply

Your email address will not be published. Required fields are marked *