Probleem:
Voor mijn website maak ik gebruik van WP Rocket voor cache ondersteuning. Hierdoor laad de website lekker snel. Om te bepalen welke URLs niet juist zijn heb ik Redirection geïnstalleerd. Zo kan ik voorkomen dat bezoekers telkens op mijn 404 pagina uitkomen.
Alleen in het 404 log van Redirection staan veel vermeldingen dat cache bestanden van WP Rocket niet gevonden kunnen worden. Na verloop van tijd worden cache bestanden vernieuwd omdat er wijzigingen zijn doorgevoerd in de website.
Om te voorkomen dat de oude bestanden bewaard blijven op de lokale computer van de bezoeker wordt de bestandsnaam aangepast. Zo is deze dus altijd uniek. Maar omdat de pagina die opgevraagd wordt de oude bestanden in wil laden levert dat een 404 op.
De cache plugin zal ondertussen de nieuwe bestanden al weer gegenereerd hebben. De bezoeker merkt er dus niets van. Alleen binnen korte tijd zit je 404 log vol en ben jezelf het overzicht kwijt.
Oplossing:
Helaas heeft de plugin geen optie om cache bestanden te negeren. Je kan ook niet een generieke URL opgegeven die genegeerd moet worden.
De auteur heeft wel een aantal filters toegevoegd waarop je in kan haken. Ik heb daarom onderstaande PHP code geschreven en toegevoegd aan de functions.php van mijn child theme.
De code controleert iedere 404 URL of daar /wp-content/cache/ in voorkomt. Zoja dan maakt hij de array $insert leeg. Redirection zal dan de URL niet toevoegen aan het 404 log.
/** * Redirection plugin: ignore the files in the wp-content/cache dir because they are always temporary. */ function child_theme_ignore_cachefiles($insert) { if (isset($insert['url']) && false !== strpos($insert['url'], '/wp-content/cache/')) { $insert = false; } return $insert; } add_filter('redirection_404_data', 'child_theme_ignore_cachefiles');
Laat even in een reactie onder dit blog horen of het goed werkt of dat je nog ideeën hebt.
Getest op:
WordPress 5.0.3, Redirection 3.7.2, WP Rocket 3.2.3.1
Bedankt, super oplossing voor WP-rocket gebruikers!