Changer ses permaliens sans tout exploser

Sujet récurrent depuis la refonte en 2017, la structure des liens des articles (permalien, permalink…) de Nofrag étaient basée sur le magnifique schéma suivant : /YYYY/MM/JJ/<id>

Sauf que ça n’a rien de SEO friendly, en 2020 on attend plutôt le titre de la news que ce schéma qui n’a quasiment aucune valeur informative. En plus, on donne directement une indication de la date de l’article : le lecteur peut estimer qu’une information ancienne n’est plus vraie et qu’elle ne mérite pas d’être lue. Ce n’est pas mon avis hein.

Changer les permaliens c’est simple, mais il faut gérer les liens existants. On parle d’environ 56000 liens vers des news pour le patrimoine de Nofrag. Si on ne prend pas le temps de réfléchir à cette question, on perd gros en référencement : des 404 à tour de bras ça fait mal auprès de Google.

On a installé le plugin Redirection, qui permet de faire…. Des redirections. Pour tester ses redirections avant de les enregistrer sous nginx c’est plutôt pratique.

La première idée a été d’aller pomper sur la base de données les URL existantes de chaque news, de sorte d’avoir un résultat de ce type par news :

"^/2005/04/02/16896/*","https://nofrag.com/preview-de-pariah/"

Et après d’importer ça dans redirection via l’outil d’import.

Ça marchait au début, mais le site a explosé cette nuit juste après avoir fait l’import  : 56000 lignes à faire gérer par le plugin, c’était trop lourd. J’ai ensuite pensé faire faire ce travail par nginx, mais pareil, 56000 rewrite rules, il n’aime pas DU TOUT.

Ce matin, j’ai eu l’idée au réveil d’utiliser les Regex. Couplée à l’utilisation de l’url https://nofrag.com/?p=ID, qui redirige vers la page d’un article à partir uniquement de son ID, c’était tout simple. Encore fallait il connaître l’existence de cette url, merci StackOverFlow.

L’expression régulière suivante nous a permis de récupérer l’identifiant de la news :

^/[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]*)

On redirige ensuite vers la page suivante :

https://nofrag.com/?p=$1

L’idée étant qu’on récupère la partie en rouge (grâce à l’utilisation des parenthèses), et qu’on la recolle dans l’url de destination avec la mention $1.

Pour aller plus loin, on va définir une règle toute bête sous nginx sur la conf de notre site :

rewrite ^/[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]*) https://nofrag.com/p=$1 permanent;

Ce qui nous permettra de nous débarrasser du plugin WP et gagner un peu de mémoire.

Point Dev – CloudFlare, c’est quoi, et comment l’utiliser ?

Nouvel article sur CloudFlare, dont j’ignorais l’utilité il y a encore un mois. Merci e-t172 pour la recommandation et l’explication, à l’origine de ce choix.

Donc, d’abord, c’est quoi CloudFlare ?

Cette entreprise propose de se greffer entre le client et le serveur web, comme l’indique ce schéma :

Image reprise chez CloudFlare

Leur service agit comme un proxy : depuis qu’on l’utilise, le contenu servi sur nofrag.com (pas le html, mais les images ou les feuilles CSS) est distribué par CloudFlare.

L’objectif est triple :

  • réduire le temps de latence (CloudFlare propose un réseau distribué qui va servir le contenu de différents serveurs en fonction de votre localisation),
  • réduire la bande passante traitée par le serveur web (on n’envoie plus que le HTML, à peu près),
  • limiter l’impact des attaques des hackerz sur notre système.

Last but not least : leur service est gratuit pour des besoins basiques.

Et comment l’utiliser avec WordPress ?

C’est tellement simple.

  1. S’inscrire à Cloudflare.
  2. Cette étape varie d’un nom de domaine à l’autre, mais il faut modifier les entrées DNS chez  votre fournisseur pour que votre nom de domaine utilise le DNS de CloudFlare.
  3. Installer cette extension sur votre WordPress.

Concernant la configuration de cette dernière, elle est simple :

Il faut d’abord récupérer la clé d’API globale de CloudFlare, disponible dans votre profil :

Cette clé est à recopier, accompagnée de votre adresse e-mail,  sur la première page de configuration de l’extension, visible dans Réglages / CloudFlare :

Vous aurez ensuite un écran avec :

  • un bouton « Apply » qui va configurer WordPress avec CloudFlare.
  • un bouton « Purge Cache » pour vider le cache CloudFlare (pour une raison ou une autre)
  • un bouton pour activer le mode « Je suis attaqué » qui permet demander à CloudFlare d’instaurer un time-out de 5 secondes avant d’accéder à chaque page de votre site, pour limiter l’impact d’une attaque de type DDOS.

Dans les réglages avancées, on trouve de quoi activer un mode « Développement » pour chuinter le cache CloudFlare le temps que vous peaufinez un thème ou un changement sur une CSS, un réglage pour activer le mode « Toujours en ligne » qui servira le cache CloudFlare même si le site est HS, et c’est à peu près tout.

Enfin, la rubrique Analytics permet d’avoir un aperçu de la quantité de données « économisée » de par l’utilisation de leur cache.

Pour avoir un ordre d’idées, sur un mois, nous avons fait passer 363 Gb / 436 Gb par CloudFlare, le reste étant traité par notre serveur.

Notez la présence de plans payants (mais chers), qui permettent d’aller beaucoup plus loin, mais je pense que leur utilité fait que cette offre est réservée à de très gros sites.