Expressions régulières

Une expression régulière (ou regex) est un groupe de caractères utilisé pour rechercher un motif dans un morceau de texte.

Dans le contexte de la redirection, une correspondance URL simple correspond à une seule URL. Une URL de regex peut correspondre à plusieurs URL.

En plus de faire correspondre plusieurs URL, une expression régulière peut extraire des informations de l’URL source et les copier dans l’URL cible.

Quelques exemples peuvent être utiles. Une redirection dont l’URL source correspond /my-url uniquement aux demandes /my-url.

Une redirection comportant l’URL source /my-url/.* correspondra aux demandes de:

  • /my-url/this
  • /my-url/that

Etc.

La partie importante de /my-url/.* est .*. Ceci est la partie de l’expression régulière de l’URL et équivaut à dire «faire correspondre /my-url/ une séquence de caractères».

Notez que pour activer une correspondance d’expression régulière dans la redirection, assurez-vous d’avoir activé l’option “regex” .

Syntaxe des expressions régulières

Ainsi, les expressions régulières telles que .*semblent vraiment utiles. Mais qu’est-ce que cela signifie réellement?

Dans ce cas, le . mot “n’importe quel caractère” et le * nombre quelconque de l’expression précédente. C’est-à-dire n’importe quel nombre de caractères.

Mais attendez, cela devient beaucoup plus compliqué!

Les expressions régulières permettent des motifs très détaillés et complexes qui vont au-delà de la portée de cette page. Si vous souhaitez plus de détails, recherchez «expressions régulières» et installez-vous pour une longue session de lecture.

Extraction des informations sur la source

Une expression régulière peut non seulement correspondre à de nombreuses URL, mais également extraire des informations de l’URL source et les copier dans l’URL cible.

Pourquoi voudriez-vous faire ça? Regardons un autre exemple. Supposons que vous avez un site dans lequel certaines pages se trouvent sous le /oldpage/répertoire et que vous les avez déplacées /newpage/.

  • /oldpage/bananas/
  • /oldpage/best-post-in-the-world/Un séjour sans faille

Et vous voulez déplacer ceux-ci vers:

  • /newpage/bananas/
  • /newpage/best-post-in-the-world/

C’est-à-dire que vous voulez changer /oldpage/ en /newpage/, mais gardez bananas et best-post-in-the-world.

Pour ce faire, vous pouvez créer une expression régulière telle que /oldpage/(.*).

Notez que le .* est entouré de crochets. Cela indique à Redirection de “capturer” les données. L’URL cible serait alors /newpage/$1.

Ici, le $1 est remplacé par le contenu de la capture  (.*). Et donc:

/oldpage/bananas => /oldpage/(bananas) => /newpage/$1 =>/newpage/bananas

Boucles Infinies

Un problème fréquemment rencontré avec une expression régulière est une redirection infinie . En d’autres termes, vous créez une expression rationnelle qui redirige vers une URL qui est elle-même interceptée par la même expression régulière. Ceci est ensuite redirigé, et encore, et encore jusqu’à ce que le navigateur s’arrête avec un ERR_TOO_MANY_REDIRECTSmessage (ou équivalent).

Par exemple, supposons que nous ayons cette redirection:

/index.php/(.*) => /portal/index.php/$1

Si vous y accédez, /index.php/bananail sera alors redirigé vers /portal/index.php/banana. Mais attendez! L’URL  /portal/index.php/bananaelle-même correspond à l’expression régulière d’origine en tant que index.php/banana correspondances ./portal/index.php/(.*)

Si nous utilisons le ^ caractère carat , nous pouvons corriger la correspondance au début de l’URL:

^/oldpage/(.*)

Ici, le ^ indique à l’expression régulière qu’elle ne s’applique que si elle correspond au début de l’URL. Cela empêche la correspondance ailleurs dans l’URL et arrête la redirection infinie.

Tester des expressions régulières

Il existe de nombreuses ressources disponibles pour les expressions régulières, et les testeurs d’expression régulière sont les plus utiles. Avec ceux-ci, vous pouvez expérimenter avec un motif et l’ajuster pour correspondre exactement à ce que vous voulez.

Notez que la redirection utilise les expressions régulières de PHP . Celles-ci sont communément appelées PCRE et peuvent ne pas être exactement identiques aux autres bibliothèques d’expressions régulières.

Une bonne ressource pour comprendre les expressions régulières peut être trouvée ici .

Expressions régulières communes

Les expressions régulières suivantes sont couramment utilisées pour WordPress:

Date de redirection et nom permalien :

Source: ^/\d{4}/\d{2}/\d{2}/(.*)
cible:/$1/

Lien permanent de la date, du nom et de la catégorie :

Source: ^/\d{4}/\d{2}/\d{2}/.*?/(.*)
cible:/$1/

Exemple: /2017/01/01/thing/=>/thing/

Réorienter toutes les URL /blog/sauf celles commençant par/blog/ :

Source: ^/(?!blog)(.*)
cible:/blog/$1

Exemple: /old-post-url/=>/blog/old-post-url/

Rediriger chaque page d’un ancien site vers un nouveau site :

Source: /(.*)
cible:https://newsite.com/$1/

Exemple: http://oldsite.com/your-thing/=>https://newsite.com/your-thing/

Rediriger les pages .html dans un répertoire :

Source: /blog/(.*?)\.html
cible:/$1/

Exemple: http://oldsite.com/blog/post-name.html=>https://newsite.com/post-name/

Supprimer index.php d’une URL

Source: /index\.php/(.*)
cible:/$1/

Exemple: http://site.com/index.php/post-name.html=>https://site.com/post-name/