Référence des triggers et des marqueurs
Les triggers définissent la manière dont les agents redirection.io vont faire correspondre les requêtes entrantes avant d'effectuer une action.
Dans une Règle, les triggers sont les conditions que les requêtes HTTP entrantes doivent remplir pour que la règle soit appliquée. Pour une requête HTTP entrante donnée, plusieurs règles peuvent correspondre, si tous leurs triggers sont remplis.
redirection.io implémente différents types de triggers :
- l'URL de la requête
- la présence, l'absence ou la valeur d'un en-tête de requête HTTP
- la méthode HTTP de la requête
- le code de statut de la réponse du backend qui est sur le point d'être renvoyé à l'utilisateur
- la date et l'heure de la requête
- l'adresse IP qui a effectué la requête
Si vous avez besoin d'un autre type de trigger, n'hésitez pas à nous contacter, nous sommes ouverts à toutes les bonnes idées !
Le trigger URL
Le trigger URL est basé sur l'URL entrante et peut être défini comme une URL simple (par exemple /some/page.html
) ou un motif (par exemple "faire correspondre toutes les URL de la forme /shop/products.php?id=<INTEGER>
).
Le trigger URL source est requis pour toutes les Règles, dans la première étape du formulaire de création de Règle :
La valeur "URL source" doit commencer par /
, ://
, http://
ou https://
:
/
: ceci s'appliquera à toutes les requêtes pour lesquelles le chemin de l'URL correspond à l'URL source, quels que soient le schéma et le nom de domaine utilisés. Par exemple, l'URL source/test
sera déclenchée pour les requêtes entrantes surhttp://example.com/test
ouhttps://example.com/test
ouhttps://subdomain.example.org/test
://
: ceci s'appliquera à toutes les requêtes pour lesquelles le domaine et le chemin de l'URL correspondent à l'URL source, quel que soit le schéma utilisé. Par exemple, l'URL source://example.com/test
sera déclenchée pour les requêtes entrantes surhttp://example.com/test
ouhttps://example.com/test
, mais pas surhttps://subdomain.example.org/test
ouhttp://example.org/test
http://
: ceci s'appliquera à toutes les requêtes pour lesquelles le domaine et le chemin de l'URL correspondent à l'URL source, et effectuées avec le protocolehttp
. Par exemple, l'URL sourcehttp://example.com/test
sera déclenchée pour les requêtes entrantes surhttp://example.com/test
, mais pas surhttps://example.com/test
ouhttp://example.org/test
https://
: ceci s'appliquera à toutes les requêtes pour lesquelles le domaine et le chemin de l'URL correspondent à l'URL source, et effectuées avec le protocolehttps
. Par exemple, l'URL sourcehttps://example.com/test
sera déclenchée pour les requêtes entrantes surhttps://example.com/test
, mais pas surhttp://example.com/test
ouhttps://example.org/test
Le trigger URL peut utiliser des marqueurs, qui sont un moyen puissant de faire correspondre plusieurs URL à la fois, basés sur des motifs. Par exemple, une Règle peut être créée pour rediriger toutes les URL de la forme /shop/products.php?id=<INTEGER>
vers /shop/clothes/product-<INTEGER>.html
, avec le code de statut de votre choix. Bien sûr, les règles peuvent intégrer beaucoup plus de complexité, basée sur les exigences que vous choisissez d'appliquer aux marqueurs.
En coulisses, nous utilisons des expressions régulières pour faire correspondre les URL entrantes, mais vous n'aurez pas à écrire manuellement ces expressions régulières. Vous pouvez plutôt utiliser notre constructeur d'expressions graphiques, qui permet d'exprimer des exigences complexes de manière simple. Lisez le chapitre sur les marqueurs pour comprendre comment ils fonctionnent.
Si vous souhaitez qu'une Règle soit exécutée pour chaque requête vers votre site web, veuillez utiliser un marqueur de type anything
. Vous pouvez combiner ce trigger URL très permissif avec des triggers plus restrictifs d'autres types :
Une fois ajouté, un marqueur peut être modifié en cliquant dessus :
Le trigger d'en-tête HTTP
Le trigger d'en-tête permet de sélectionner des requêtes en fonction de la présence, de l'absence ou de la valeur d'un en-tête HTTP dans la requête. Il existe de nombreux cas d'utilisation pour cet en-tête : rediriger l'utilisateur en fonction de sa langue préférée (en-tête Accept-Language
), exécuter une action spécifique pour un User-Agent
particulier, etc.
La Règle ci-dessus sera déclenchée pour chaque requête arrivant sur votre site web avec un en-tête de requête Accept-Language
commençant par fr-
(donc, par exemple, fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7,de;q=0.6
, mais pas en-US;q=0.9
).
Le trigger de méthode HTTP
Le trigger de méthode filtre les requêtes en fonction de la méthode HTTP utilisée pour effectuer la requête. Vous pouvez sélectionner une ou plusieurs méthodes HTTP, et la Règle ne sera déclenchée que si la méthode HTTP utilisée pour la requête correspond à l'une des méthodes sélectionnées :
Ce trigger peut également être nié, afin de déclencher la règle uniquement lorsque la méthode HTTP de la requête ne correspond pas à l'une des méthodes HTTP sélectionnées :
Le trigger de code de statut de réponse du backend
Le trigger de code de statut de réponse du backend permet de restreindre le déclenchement d'une Règle en fonction du code de statut généré par votre application backend. Lorsqu'une règle utilise le trigger de code de statut de réponse du backend, elle laissera d'abord la requête passer vers votre application backend, puis elle inspectera le code de statut HTTP de la réponse que votre application a généré.
C'est utile, par exemple, si vous souhaitez exécuter une action spécifique lorsqu'un code de statut donné est sur le point d'être renvoyé à l'utilisateur.
Ce trigger peut également être nié, afin de déclencher la règle uniquement lorsque le code de statut qui va être renvoyé à l'utilisateur ne correspond pas à l'un des codes de statut sélectionnés :
Les triggers de date, d'heure et de date et heure
Ce trigger est uniquement disponible pour les projets du plan "Pro" et nécessite l'utilisation d'au moins l'agent 2.6.0
.
Cette famille de triggers liés au temps est conçue pour permettre de filtrer les requêtes en fonction de la date ou de l'heure auxquelles elles ont été effectuées. En d'autres termes, ils permettent d'exécuter une règle uniquement un jour donné, après ou avant une date, pendant une période spécifique, etc.
Par exemple, on peut filtrer en fonction de la date de la requête :
- Égal à : la règle ne sera déclenchée que si la date de la requête est égale à la valeur configurée.
- N'est pas égal à : la règle ne sera déclenchée que si la date de la requête est différente de la valeur configurée.
- Est après : la règle ne sera déclenchée que si la requête est effectuée après la date fournie.
- Est avant : la règle ne sera déclenchée que si la requête est effectuée avant la date fournie.
- Est entre : la règle ne sera déclenchée que si la date de la requête est comprise entre les deux dates fournies.
- N'est pas entre : la règle ne sera déclenchée que si la date de la requête n'est pas comprise entre les deux dates fournies.
Un critère supplémentaire est Est l'un de, qui permet de choisir les jours de la semaine où une règle doit être exécutée.
Regardez l'exemple suivant :
Avec un tel trigger, cette règle sera exécutée pour toutes les requêtes sur /live-meeting
effectuées pendant les week-ends. Pendant les jours de semaine, la règle sera ignorée.
Le trigger Heure est similaire au trigger Date, sauf qu'il permet de définir la plage horaire de la journée qui doit déclencher l'exécution de la règle :
Les triggers Date, Date et heure et Heure peuvent être combinés :
- un trigger
DateTime
qui restreindrait la règle à s'appliquer uniquement après une date et une heure données ; - un trigger
Date
pour limiter la règle aux week-ends uniquement ; - un trigger
Time
pour limiter la règle uniquement pendant une plage horaire donnée de la journée.
Le trigger d'adresse IP
Ce trigger est uniquement disponible pour les projets du plan "Pro" et nécessite l'utilisation d'au moins l'agent 2.3.0
.
Le trigger d'adresse IP permet d'exécuter une Règle uniquement si l'adresse IP du client correspond à certaines restrictions :
- Égal à : la règle ne sera déclenchée que si l'adresse IP du client est égale à la valeur configurée.
- N'est pas égal à : la règle ne sera déclenchée que si l'adresse IP du client est différente de la valeur configurée.
- Supérieur à : la règle ne sera déclenchée que si l'adresse IP du client est supérieure à la valeur configurée.
- Supérieur ou égal à : la règle ne sera déclenchée que si l'adresse IP du client est supérieure ou égale à la valeur configurée.
- Inférieur à : la règle ne sera déclenchée que si l'adresse IP du client est inférieure à la valeur configurée.
- Inférieur ou égal à : la règle ne sera déclenchée que si l'adresse IP du client est inférieure ou égale à la valeur configurée.
- Dans la plage : la règle ne sera déclenchée que si l'adresse IP du client est comprise entre les deux adresses IP fournies.
- Hors de la plage : la règle ne sera déclenchée que si l'adresse IP du client n'est pas comprise entre les deux adresses IP fournies.
La comparaison est effectuée en utilisant la notation d'adresse IP. Par exemple, 10.100.1.1
est supérieur à 10.9.1.1
(même si ce n'est pas vrai du point de vue d'une comparaison de chaînes de caractères).
Le trigger d'échantillonnage
Ce trigger est uniquement disponible pour les projets du plan "Pro" et nécessite l'utilisation d'au moins l'agent 2.3.0
.
Le trigger d'échantillonnage peut être utilisé pour exécuter une Règle uniquement sur une portion donnée de votre trafic. Par exemple, si vous choisissez la valeur 22
, alors 22% des requêtes correspondantes produiront une réponse contenant les actions de cette règle.
Créer un marqueur
Comme expliqué ci-dessus, les marqueurs sont utiles pour appliquer une règle à plusieurs URL à la fois, sans avoir besoin de créer plusieurs règles. Définir un marqueur est assez simple :
cliquez sur le bouton "Ajouter un marqueur". Une fenêtre modale apparaît, avec trois onglets. Spécifiez les informations du marqueur dans l'onglet "Métadonnées" (nom et description du marqueur) - cela vous permettra de vous rappeler l'objectif du marqueur ; L'onglet "Restrictions" permet de définir le type et les caractéristiques du marqueur. Vous pouvez par exemple définir des marqueurs de typestring
, ne contenant que des lettres majuscules et commençant par la chaîneFOO
. Les "Transformations" sont un moyen simple de transformer les valeurs correspondantes pour les réutiliser plus tard dans les actions.
Une fois le marqueur créé, vous pouvez l'utiliser dans la partie "Actions" de la règle. Vous pouvez également simplement utiliser ce marqueur pour faire correspondre de nombreuses URL entrantes, sans utiliser la valeur du marqueur (par exemple, vous pourriez vouloir créer une action "Page non disponible" pour toutes les requêtes de la forme /wp-admin/<WHATEVER>
).
Survoler le marqueur affiche les détails du marqueur, ce qui est utile pour comprendre ce que ce marqueur fait :
Types de marqueurs
redirection.io prend en charge une grande variété de marqueurs d'URL :
anything
Le marqueur anything
correspondra à tous les caractères. Il est équivalent à l'expression régulière .*
.
date
Le type date
représente une date complète, conformément à la rfc3339.
- Exemple :
2018-07-15
- Options :
aucune
datetime
Le type datetime
représente une date et heure, conformément à la rfc3339.
- Exemples :
2018-07-15T14:59:12Z
2018-07-15T14:59:12+02:00
2018-07-15T14:59:12.52Z
- Options :
aucune
enum
Le type enum
permet de lister les valeurs exactes acceptées.
- Exemples :
cat
dog
fish
it can be multiple words
- Options :
- Valeurs (obligatoire) : Tapez simplement le caractère ou le mot que le marqueur doit faire correspondre, puis appuyez sur "entrée".
integer
Le type integer
correspond aux valeurs entières positives (aussi appelées nombres naturels).
- Exemples :
1
42
67638
- Options :
- Minimum (facultatif) : Vous pouvez définir une valeur minimale pour que le marqueur corresponde. Par exemple, si vous tapez
404
dans le champ "minimum", les valeurs405
et1234
correspondront, mais pas88
ni403
. Cette limite est inclusive (ce qui signifie, avec l'exemple précédent, que404
correspondra). - Maximum (facultatif) : Vous pouvez définir une valeur maximale pour que le marqueur corresponde. Par exemple, si vous tapez
404
dans le champ "maximum", les valeurs88
et403
correspondront, mais pas405
ou1234
. Cette limite est inclusive (ce qui signifie, avec l'exemple précédent, que404
correspondra).
- Minimum (facultatif) : Vous pouvez définir une valeur minimale pour que le marqueur corresponde. Par exemple, si vous tapez
regex
Ce type permet de définir des expressions de correspondance avancées basées sur des expressions régulières. C'est bien sûr le moyen le plus polyvalent de créer des marqueurs, car il peut aider à créer des expressions de correspondance très complexes.
- Exemples :
[a-z0-9_-]{3,16}
(\d)+
- Options :
- Regex (obligatoire) : Tapez ici l'expression régulière que vous souhaitez utiliser pendant la correspondance.
Dans la mesure du possible, veuillez essayer d'utiliser d'autres types de marqueurs natifs, afin de bénéficier de la flexibilité maximale du système de marqueurs.
Nous ne prenons délibérément pas en charge les expressions régulières telles que "look-ahead" ou "look-behind". Lorsqu'elles sont utilisées de manière incorrecte, ce type d'expression régulière peut gravement dégrader les performances d'analyse et peut même être utilisé pour des attaques par déni de service par expression régulière (ReDoS).
Si vous avez besoin de créer une exception, il est fort probable que vous puissiez obtenir le comportement attendu en créant deux règles :
- une règle "générale", qui s'appliquera dans tous les cas ;
- et une deuxième règle, pour le cas spécifique qui doit faire l'objet d'une exception, avec une priorité plus élevée.
Par exemple, supposez que vous vouliez rediriger toutes les URL de la forme /redirect-country/<COUNTRY-CODE>
, avec <COUNTRY-CODE>
étant un code à 2 lettres, à l'exception de la chaîne "en
".
Deux stratégies sont possibles :
- soit lister toutes les valeurs possibles (
de
,uk
,us
,it
,nl
, etc.) avec un marqueur de type "enum". - soit créer deux règles :
- une première règle générique avec la priorité
0
, avec un trigger d'URL de la forme/redirect-country/<COUNTRY-CODE>
dans laquelle<COUNTRY-CODE>
est défini comme un marqueurregex
avec la valeur d'expression régulière[a-zA-Z]{2}
. - une deuxième règle, avec une priorité plus élevée (par exemple,
10
), déclenchée par l'URL/redirect-country/fr
, qui utilise l'action "configuration" pour empêcher l'exécution de la première règle dans ce cas spécifique.
- une première règle générique avec la priorité
En d'autres termes, l'action "configuration" peut "annuler" l'application d'autres règles de priorité inférieure pour gérer les cas exceptionnels. Un exemple d'utilisation de l'application "configuration" est fourni dans la recette "Redirection sauf un chemin".
string
Le type string
permet de définir des marqueurs textuels, ce qui est le cas le plus courant pour définir des marqueurs. Ce type devrait couvrir la plupart des cas de correspondance, c'est la raison pour laquelle il est automatiquement sélectionné lorsque vous créez un nouveau marqueur.
Nous prenons en charge la plage UTF-8 complète, ce qui signifie que vous pouvez faire correspondre les caractères ASCII réguliers, mais aussi les émojis ou les caractères alphabétiques spécifiques.
- Exemples :
string
h3llo
with-specific.chars
nón-asçii-chars-Ě-Dž
- Options :
- lettres minuscules (facultatif) : Cochez cette case pour faire correspondre les chaînes contenant des lettres minuscules, telles que définies dans la catégorie générale Unicode Ll.
- lettres majuscules (facultatif) : Cochez cette case pour faire correspondre les chaînes contenant des lettres majuscules, telles que définies dans les catégories générales Unicode
Lu
etLt
. - chiffres (facultatif) : Cochez cette case pour faire correspondre les chaînes contenant des chiffres (
0
,1
,2
, ...9
). - caractères encodés en pourcentage (facultatif) : Cochez cette case pour faire correspondre les chaînes contenant des caractères encodés en pourcentage, conformément à la rfc3986.
- Caractères spécifiques (facultatif) : Vous pouvez ajouter ici plusieurs caractères spécifiques - il peut s'agir par exemple du caractère de soulignement (
_
), d'un tiret (-
), d'un point (.
), etc. - Commence par (facultatif) : En combinaison avec d'autres restrictions, cette restriction ne fera correspondre que les chaînes commençant par cette valeur.
- Se termine par (facultatif) : En combinaison avec d'autres restrictions, cette restriction ne fera correspondre que les chaînes se terminant par cette valeur.
- Contient (facultatif) : En combinaison avec d'autres restrictions, cette restriction ne fera correspondre que les chaînes contenant cette valeur.
uuid
Le type uuid
correspond aux chaînes de caractères au format uuid valides.
- Exemples :
f6883ff9-f163-43d7-8177-bfa24277fd20
Transformations de marqueurs
Introduction
Les valeurs qui ont été mises en correspondance à l'aide de marqueurs peuvent être réutilisées dans les actions. Par exemple, si vous avez défini un trigger d'URL avec un marqueur nommé slug
, vous pouvez choisir de créer une action de Redirection
vers une URL renseignée avec ce marqueur.
Parfois, cependant, le format de votre URL a changé. Imaginez, par exemple, que vos URL précédentes ressemblaient à :
http://example.org/some_category/some_product.63664.html
http://example.org/some_other_category/an_other_product.13719.html
http://example.org/an_third_category/a_third_product.871.html
Alors que, après la refonte de votre site web, vos nouvelles URL ont été "nettoyées" et ressemblent maintenant à :
http://example.org/some-category/some-product
http://example.org/some-other-category/an-other-product
http://example.org/an-third-category/a-third-product
(Oui, c'est beaucoup plus lisible)
Vous avez peut-être défini un trigger d'URL de la forme /<CATEGORY_NAME>/<PRODUCT_NAME>.<PRODUCT_ID>.html
, où :
<CATEGORY_NAME>
est un marqueurstring
correspondant aux lettres minuscules et au signe_
;<PRODUCT_NAME>
est un marqueurstring
correspondant aux lettres minuscules et au signe_
;<PRODUCT_ID>
est un marqueurinteger
.
Activez simplement une transformation Replace
sur les marqueurs <CATEGORY_NAME>
et <PRODUCT_NAME>
, et vous pourrez réutiliser ces valeurs en les injectant dans une action de Redirection de la forme :
- Code de statut :
302
- URL cible :
/<CATEGORY_NAME>/<PRODUCT_NAME>
Bien que les transformations soient un moyen pratique de modifier les valeurs de marqueurs capturées, gardez à l'esprit que l'exécution de nombreuses transformations peut être coûteuse en termes de performances. Vous devez configurer le moins de transformations possible dans les marqueurs de vos règles. En particulier, le mécanisme de transformations n'est pas conçu pour exécuter en chaîne des centaines de transformations pour un marqueur donné. L'exécution de moins de 5 transformations, cependant, ne devrait toujours produire qu'une surcharge de performance négligeable.
Types de transformation de marqueurs disponibles
Les marqueurs redirection.io prennent en charge plusieurs transformations :
- Camelize : Transforme les chaînes de caractères de la forme
some-string
ensomeString
(fonctionne avec les tirets et les underscores). - Dasherize : Génère une version "dasherized" de la chaîne, où les mots sont séparés par des tirets, par exemple
hello-world
. - Lowercase : Écrit tous les caractères en minuscules, par exemple
helloworld
. - Replace : Remplace toutes les occurrences d'une chaîne par une autre (par exemple, transforme
st-petersburg
ensaint-petersburg
). - Slice : Coupe la chaîne d'une position (commençant à 0) à une autre (cela peut être utile, par exemple, si les valeurs de vos marqueurs ont été tronquées).
- Underscorize : Génère une version "underscorized" de la chaîne, où les mots sont séparés par des underscores, par exemple
hello_world
. - Uppercase : Écrit tous les caractères en majuscules, par exemple
HELLO-WORLD
.
Chaîner les transformations de marqueurs
Toutes ces transformations peuvent être chaînées et sont exécutées séquentiellement, ce qui signifie que vous pouvez par exemple appliquer successivement une transformation Replace
, puis une transformation Camelize
:
st-petersburg
➡️ saint-petersburg
➡️ saintPetersburg
Modèles de marqueurs
Il peut arriver que de nombreuses règles de votre ensemble de règles utilisent le même marqueur. Par exemple, imaginez que vous deviez définir une règle qui contient un paramètre country
, dont la valeur peut être de
, es
, fr
, it
, uk
ou us
. Vous feriez cela habituellement en utilisant un type de marqueur énuméré avec ces valeurs.
Cependant, si vous devez définir de nombreuses règles contenant le même marqueur, il peut devenir un peu répétitif de recréer ce marqueur dans toutes ces règles. C'est là que les modèles de marqueurs entrent en jeu, vous permettant de définir des marqueurs qui peuvent être réutilisés dans plusieurs règles sans avoir besoin de les redéfinir à chaque fois.
Pour en savoir plus sur les modèles de marqueurs, consultez la section de configuration du projet de notre documentation.
Êtes-vous au point avec les triggers et les marqueurs ? Poursuivez avec la création d'une action.