<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Reference on vanityURLs</title><link>https://vanityurls.link/fr/docs/reference/</link><description>Recent content in Reference on vanityURLs</description><generator>Hugo</generator><language>fr-CA</language><atom:link href="https://vanityurls.link/fr/docs/reference/index.xml" rel="self" type="application/rss+xml"/><item><title>Analytics</title><link>https://vanityurls.link/fr/docs/reference/analytics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/analytics/</guid><description>&lt;p&gt;Les analytics vanityURLs s&amp;rsquo;exécutent dans le Cloudflare Worker. Elles ne demandent pas de JavaScript de tracking navigateur, de cookies ou de compte visiteur.&lt;/p&gt;
&lt;p&gt;Cloudflare Web Analytics et Real User Measurement (RUM) ne font pas partie du baseline vanityURLs. Gardez Cloudflare RUM désactive sauf si un opérateur veut explicitement de la telémetrie navigateur en dehors du modèle d&amp;rsquo;événements serveur du redirecteur.&lt;/p&gt;
&lt;p&gt;Le Worker envoie les analytics avec &lt;code&gt;ctx.waitUntil()&lt;/code&gt;.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; Les redirections et les pages devraient continuer à répondre même si le fournisseur analytics est lent ou indisponible.&lt;/p&gt;</description></item><item><title>Marque</title><link>https://vanityurls.link/fr/docs/reference/brand/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/brand/</guid><description>&lt;p&gt;Les normes de marque vanityURLs vivent maintenant sur &lt;a href="https://brand.vanityurls.link/fr/"&gt;brand.vanityurls.link&lt;/a&gt;. Utilisez ce site pour les regles de logo, couleurs, typographie, badges, interface produit et assets.&lt;/p&gt;
&lt;p&gt;La marque contrôle le wordmark public et la courte ligne sous les pages publiques générées. Ces valeurs vivent dans &lt;code&gt;custom/v8s-site-config.json&lt;/code&gt; et sont appliquées au build, donc une instance de marque normale n&amp;rsquo;a pas besoin de copier les pages par défaut dans &lt;code&gt;custom/public/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Vous pouvez personnalisér pendant &lt;code&gt;npm run setup&lt;/code&gt; ou en mettant à jour manuellement les fichiers dans &lt;code&gt;custom/&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Aide-mémoire</title><link>https://vanityurls.link/fr/docs/reference/cheatsheet/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/cheatsheet/</guid><description>&lt;p&gt;Utilisez cet aide-mémoire lorsque vous connaissez déjà le produit et voulez retrouver rapidement la bonne action. La page est conçue pour l&amp;rsquo;écran et pour l&amp;rsquo;export PDF depuis le navigateur.&lt;/p&gt;
&lt;div class="cheatsheet-grid"&gt;
 &lt;section class="cheatsheet-card"&gt;
 &lt;h2&gt;Workflow quotidien&lt;/h2&gt;
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Besoin&lt;/th&gt;
 &lt;th&gt;Action / fichier&lt;/th&gt;
 &lt;th&gt;Notes&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Installer&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;npm install&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;À lancer après checkout ou changement de dépendances.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Démarrer localement&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;npm run dev&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lance le Worker avec Wrangler pour les tests locaux.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Valider&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;npm run check&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Construit et vérifie les artefacts runtime avant déploiement.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Déployer&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;git push&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;GitHub et Cloudflare publient le Worker automatiquement.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/section&gt;
 &lt;section class="cheatsheet-card"&gt;
 &lt;h2&gt;Dépôts&lt;/h2&gt;
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Surface&lt;/th&gt;
 &lt;th&gt;Dépôt&lt;/th&gt;
 &lt;th&gt;Déploie vers&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Redirecteur&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;vanityURLs/code&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;https://VanityURLs.link&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Documentation&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;vanityURLs/website&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;https://www.VanityURLs.link&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Sorties générées&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;build/&lt;/code&gt;, &lt;code&gt;src/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ne pas modifier directement.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/section&gt;
 &lt;section class="cheatsheet-card"&gt;
 &lt;h2&gt;Fichiers clés&lt;/h2&gt;
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Fichier&lt;/th&gt;
 &lt;th&gt;Utilisation&lt;/th&gt;
 &lt;th&gt;Responsable&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-links.txt&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Liste des redirections éditée à la main.&lt;/td&gt;
 &lt;td&gt;Instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-site-config.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Marque, contacts, langues, fuseau horaire.&lt;/td&gt;
 &lt;td&gt;Instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-policies.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Domaines permis, domaines bloqués, politique de mots-clés.&lt;/td&gt;
 &lt;td&gt;Instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;defaults/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Baseline produit copiée ou fusionnée par le build.&lt;/td&gt;
 &lt;td&gt;Produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/section&gt;
 &lt;section class="cheatsheet-card"&gt;
 &lt;h2&gt;Format d'un lien&lt;/h2&gt;
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Champ&lt;/th&gt;
 &lt;th&gt;Exemple&lt;/th&gt;
 &lt;th&gt;Notes&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Slug&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;docs&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Segment public. Gardez-le lisible et durable.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cible&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;https://example.com/docs&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;URL de destination après contrôles de politique.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;État&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;active&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Détermine si la redirection doit résoudre.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Métadonnées&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;title&lt;/code&gt;, &lt;code&gt;owner&lt;/code&gt;, &lt;code&gt;notes&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Aide la revue, l'audit, le tableau de bord et le transfert.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/section&gt;
 &lt;section class="cheatsheet-card"&gt;
 &lt;h2&gt;Horaires&lt;/h2&gt;
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Besoin&lt;/th&gt;
 &lt;th&gt;Syntaxe&lt;/th&gt;
 &lt;th&gt;Notes&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Cible temporaire&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;@schedule&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Indentez les blocs sous la ligne du lien.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Fuseau horaire&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;America/Toronto&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Utilisez les noms IANA acceptés par le runtime.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Liens exacts&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/launch&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Les horaires s'appliquent aux liens exacts, pas aux namespaces splat.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Repli&lt;/td&gt;
 &lt;td&gt;Cible de la ligne&lt;/td&gt;
 &lt;td&gt;La cible normale reste utilisée hors des fenêtres horaires.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/section&gt;
 &lt;section class="cheatsheet-card"&gt;
 &lt;h2&gt;Comportement&lt;/h2&gt;
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Entrée&lt;/th&gt;
 &lt;th&gt;Comportement&lt;/th&gt;
 &lt;th&gt;À vérifier&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Slug actif connu&lt;/td&gt;
 &lt;td&gt;Redirige vers la cible.&lt;/td&gt;
 &lt;td&gt;Confirmez la cible et la politique.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Slug inactif ou expiré&lt;/td&gt;
 &lt;td&gt;Affiche la page de statut correspondante.&lt;/td&gt;
 &lt;td&gt;Revoyez l'état, les dates et le registre généré.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Destination bloquée&lt;/td&gt;
 &lt;td&gt;Ne redirige pas.&lt;/td&gt;
 &lt;td&gt;Vérifiez la politique source et la blocklist générée.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Chemin inconnu&lt;/td&gt;
 &lt;td&gt;Retourne le comportement introuvable.&lt;/td&gt;
 &lt;td&gt;Vérifiez le slug et les routes générées.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/section&gt;
 &lt;section class="cheatsheet-card"&gt;
 &lt;h2&gt;Personnaliser&lt;/h2&gt;
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Objectif&lt;/th&gt;
 &lt;th&gt;Utiliser&lt;/th&gt;
 &lt;th&gt;Éviter&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Changer les liens&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-links.txt&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Modifier &lt;code&gt;build/v8s.json&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Marquer les pages&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-site-config.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Copier les templates complets sans besoin.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Surcharger des assets&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;custom/public/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Changer les defaults produit pour une instance.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Changer le Worker&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;scripts/workers/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Modifier le &lt;code&gt;src/&lt;/code&gt; généré.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/section&gt;
 &lt;section class="cheatsheet-card"&gt;
 &lt;h2&gt;Dépannage&lt;/h2&gt;
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Symptôme&lt;/th&gt;
 &lt;th&gt;Vérifier&lt;/th&gt;
 &lt;th&gt;Correctif probable&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;OK localement, pas en ligne&lt;/td&gt;
 &lt;td&gt;Action GitHub et statut de déploiement Worker.&lt;/td&gt;
 &lt;td&gt;Poussez, attendez le déploiement, retestez.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Lien absent&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;build/v8s.json&lt;/code&gt; généré.&lt;/td&gt;
 &lt;td&gt;Corrigez la ligne source, puis rebuildez.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Mauvaise langue&lt;/td&gt;
 &lt;td&gt;Langues configurées et surcharges localisées.&lt;/td&gt;
 &lt;td&gt;Ajoutez la page localisée ou utilisez le fallback.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Horaire surprenant&lt;/td&gt;
 &lt;td&gt;Fuseau horaire opérateur et fenêtre de dates.&lt;/td&gt;
 &lt;td&gt;Utilisez des noms IANA explicites.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/section&gt;
&lt;/div&gt;
&lt;h2 id="comparaisons-rapides"&gt;Comparaisons rapides&lt;/h2&gt;
&lt;table class="cheatsheet-compare"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Choix&lt;/th&gt;
 &lt;th&gt;À utiliser quand&lt;/th&gt;
 &lt;th&gt;À retenir&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;defaults/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Vous changez la baseline produit pour toutes les instances.&lt;/td&gt;
 &lt;td&gt;À revoir comme comportement produit.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Vous changez une instance déployée.&lt;/td&gt;
 &lt;td&gt;Meilleur endroit pour les changements opérateur.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Slug exact&lt;/td&gt;
 &lt;td&gt;Le chemin public doit résoudre vers une seule destination connue.&lt;/td&gt;
 &lt;td&gt;Supporte le comportement horaire.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Namespace splat&lt;/td&gt;
 &lt;td&gt;Un préfixe stable doit transmettre des chemins imbriqués.&lt;/td&gt;
 &lt;td&gt;À éviter pour les redirections sensibles au temps.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Produits Cloudflare</title><link>https://vanityurls.link/fr/docs/reference/cloudflare-products/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/cloudflare-products/</guid><description>&lt;p&gt;vanityURLs est un raccourcisseur d&amp;rsquo;URL qui fonctionne sur le réseau edge de Cloudflare avec votre &lt;em&gt;propre&lt;/em&gt; domaine.&lt;/p&gt;
&lt;table class="w-full table-fixed"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th class="w-1/3 align-top"&gt;Produit&lt;/th&gt;
 &lt;th class="w-2/3 align-top"&gt;Role dans vanityURLs&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://www.cloudflare.com/products/dns/"&gt;Cloudflare DNS&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;DNS autoritatif du domaine court, incluant l'enregistrement proxifie du domaine personnalisé du Worker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://www.cloudflare.com/products/workers/"&gt;Cloudflare Workers&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Runtime pour les redirections, les pages opérationnelles protégées, les ressources statiques générées et l'envoi d'analytics côté serveur&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://www.cloudflare.com/products/access/"&gt;Cloudflare Access&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Protection Zero Trust Network Access (ZTNA) pour les surfaces opérationnelles protégées, comme le tableau de bord Stats et la matrice de tests runtime&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://www.cloudflare.com/products/ssl/"&gt;Cloudflare SSL/TLS&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Certificats edge, Universal SSL, enforcement HTTPS et configuration TLS minimale&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="protection-réseau-avant-que-le-trafic-atteigne-linstance-vanityurls"&gt;Protection réseau avant que le trafic atteigne l&amp;rsquo;instance vanityURLs&lt;/h2&gt;
&lt;table class="w-full table-fixed"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th class="w-1/3 align-top"&gt;Produit ou surface&lt;/th&gt;
 &lt;th class="w-2/3 align-top"&gt;Role dans vanityURLs&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://www.cloudflare.com/products/waf/"&gt;Web Application Firewall&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Regles de sécurité personnalisées pour les sondes de scanner, les methodes inattendues, les clients suspects, les crawlers IA non désirés et les autres trafics bloques à l'edge&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://www.cloudflare.com/products/rate-limiting/"&gt;Cloudflare Rate Limiting&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Limitation de debit pour les comportements abusifs qui ne devraient pas consommer de ressources Worker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://www.cloudflare.com/ddos/"&gt;Distributed Denial-of-Service (DDoS) Protection&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Protection réseau toujours active&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://www.cloudflare.com/products/bot-management"&gt;Cloudflare Bot Management&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Contrôles bot utilises pour réduire l'abus automatise avant que les requêtes atteignent le Worker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://developers.cloudflare.com/bots/concepts/bot/#ai-crawlers"&gt;Cloudflare AI Crawl Control&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Contrôles propres a certaines familles de crawlers IA&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://developers.cloudflare.com/rules/"&gt;Cloudflare Rules&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Managed Transforms et normalisation des URL avant que le trafic atteigne l'instance vanityURLs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://developers.cloudflare.com/waf/analytics/security-events/"&gt;Cloudflare Security Events&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Surface de revue pour les mitigations appliquees avant l'execution du Worker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Cloudflare est une plateforme de type logiciel-service en évolution continue : fonctionnalites, API, libellés du tableau de bord et navigation peuvent changer sans numero de version majeur. Pour garder la documentation alignee avec cette surface mouvante, vanityURLs maintient une &lt;a href="https://github.com/vanityURLs/website/blob/main/data/cloudflare-protection-defaults.json"&gt;capture structuree du tableau de bord Cloudflare&lt;/a&gt; en JSON. Cette capture aide les mainteneurs a comparer les changements d&amp;rsquo;interface dans le temps et a mettre la documentation à jour de facon délibérée. Pour le raisonnement de maintenance, consultez &lt;a href="https://github.com/vanityURLs/code/blob/main/docs/adr/0012-maintain-cloudflare-dashboard-capture.md"&gt;ADR 0012&lt;/a&gt; et &lt;a href="https://vanityurls.link/fr/blog/json-audit-ledger-for-cloudflare-docs/"&gt;The JSON audit ledger behind the Cloudflare setup docs&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Fichiers de configuration</title><link>https://vanityurls.link/fr/docs/reference/configuration-files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/configuration-files/</guid><description>&lt;p&gt;vanityURLs garde les valeurs par défaut du produit, les choix propres à l&amp;rsquo;instance, les réglages locaux du poste et les artefacts runtime générés dans des fichiers séparés.&lt;/p&gt;
&lt;p&gt;Utilisez cette page pour identifier les fichiers de configuration actuels et la forme de schéma que chacun suit. Le contrat exact reste les fichiers Git et les scripts dans le dépôt de code.&lt;/p&gt;
&lt;h2 id="configuration-source"&gt;Configuration source&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Fichier&lt;/th&gt;
 &lt;th&gt;Format&lt;/th&gt;
 &lt;th&gt;Forme de schéma&lt;/th&gt;
 &lt;th&gt;Proprietaire&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/wrangler.toml"&gt;&lt;code&gt;wrangler.toml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;TOML, selon la &lt;a href="https://developers.cloudflare.com/workers/wrangler/configuration/"&gt;configuration Cloudflare Wrangler&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;main&lt;/code&gt;, &lt;code&gt;compatibility_date&lt;/code&gt;, &lt;code&gt;workers_dev&lt;/code&gt;, &lt;code&gt;preview_urls&lt;/code&gt;, &lt;code&gt;[build]&lt;/code&gt;, &lt;code&gt;[assets]&lt;/code&gt;, &lt;code&gt;[vars]&lt;/code&gt;, &lt;code&gt;[[routes]]&lt;/code&gt;, &lt;code&gt;[observability]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/package.json"&gt;&lt;code&gt;package.json&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Manifeste npm JSON&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;scripts&lt;/code&gt;, &lt;code&gt;devDependencies&lt;/code&gt;, metadonnées du paquet&lt;/td&gt;
 &lt;td&gt;Produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;package-lock.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lockfile npm JSON&lt;/td&gt;
 &lt;td&gt;Graphe de dependances verrouille génère par npm&lt;/td&gt;
 &lt;td&gt;Produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/defaults/v8s-site-config.json"&gt;&lt;code&gt;defaults/v8s-site-config.json&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Configuration de site vanityURLs JSON, &lt;code&gt;schema_version: &amp;quot;1.0&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base produit pour &lt;code&gt;i18n&lt;/code&gt;, &lt;code&gt;links&lt;/code&gt;, et &lt;code&gt;operator&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-site-config.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration de site vanityURLs JSON, &lt;code&gt;schema_version: &amp;quot;1.0&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Surcharges d&amp;rsquo;instance pour &lt;code&gt;i18n&lt;/code&gt;, &lt;code&gt;links&lt;/code&gt;, &lt;code&gt;operator&lt;/code&gt;, et &lt;code&gt;branding&lt;/code&gt;; &lt;code&gt;operator.operator_domain&lt;/code&gt; peut piloter le domaine par défaut des contacts&lt;/td&gt;
 &lt;td&gt;Instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/defaults/v8s-links.txt"&gt;&lt;code&gt;defaults/v8s-links.txt&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Texte delimite par pipes avec blocs &lt;code&gt;@schedule&lt;/code&gt; inline optionnels&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;slug|target|state|title|description|tags|owner|expires_at|notes&lt;/code&gt;, suivi de directives d&amp;rsquo;horaire indentées au besoin&lt;/td&gt;
 &lt;td&gt;Liens de départ produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-links.txt&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Texte delimite par pipes avec blocs &lt;code&gt;@schedule&lt;/code&gt; inline optionnels&lt;/td&gt;
 &lt;td&gt;Meme format que &lt;code&gt;defaults/v8s-links.txt&lt;/code&gt;; c&amp;rsquo;est la &lt;a href="https://vanityurls.link/fr/docs/reference/link-format/"&gt;source de vérité rédigée par un humain pour les liens&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-schedules.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Horaire vanityURLs JSON hérité&lt;/td&gt;
 &lt;td&gt;Source de compatibilité 3.x dépréciée lue par le build et la commande actuelle &lt;code&gt;lnk schedule&lt;/code&gt;; les blocs &lt;code&gt;@schedule&lt;/code&gt; inline ont priorité&lt;/td&gt;
 &lt;td&gt;Instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/defaults/v8s-policies.json"&gt;&lt;code&gt;defaults/v8s-policies.json&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Politique vanityURLs JSON, &lt;code&gt;schema_version: &amp;quot;1.0&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;defaults&lt;/code&gt;, &lt;code&gt;allow_domains&lt;/code&gt;, &lt;code&gt;blocked_keywords&lt;/code&gt;, &lt;code&gt;block_domains&lt;/code&gt;, &lt;code&gt;generated_sources&lt;/code&gt; optionnel&lt;/td&gt;
 &lt;td&gt;Produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-policies.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Politique vanityURLs JSON, &lt;code&gt;schema_version: &amp;quot;1.0&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Meme format que &lt;code&gt;defaults/v8s-policies.json&lt;/code&gt;; la politique custom remplace la politique source par défaut avant la fusion des feeds génères&lt;/td&gt;
 &lt;td&gt;Instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/defaults/v8s-policies.json"&gt;&lt;code&gt;defaults/v8s-blocklist-categories.json&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Taxonomie de politique vanityURLs JSON, &lt;code&gt;schema_version: &amp;quot;1.0&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;categories&lt;/code&gt;, &lt;code&gt;severities&lt;/code&gt;, &lt;code&gt;sources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-blocklist-categories.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Taxonomie de politique vanityURLs JSON, &lt;code&gt;schema_version: &amp;quot;1.0&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Extension ou surcharge optionnelle des categories, sevérités et sources de blocklist générée&lt;/td&gt;
 &lt;td&gt;Instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/defaults/v8s-language-metadata.json"&gt;&lt;code&gt;defaults/v8s-language-metadata.json&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Métadonnées de langue vanityURLs JSON&lt;/td&gt;
 &lt;td&gt;Libellés produit pour les listes de pages localisées générées et la navigation des pages d&amp;rsquo;état&lt;/td&gt;
 &lt;td&gt;Produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/defaults/legal/v8s-legal-content.json"&gt;&lt;code&gt;defaults/legal/v8s-legal-content.json&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Contenu légal vanityURLs JSON&lt;/td&gt;
 &lt;td&gt;Contenu par défaut des pages légales, Confiance et sécurité, sécurité et délais de réponse rendus par le build&lt;/td&gt;
 &lt;td&gt;Produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/defaults/v8s-blocklist-categories.json"&gt;&lt;code&gt;defaults/v8s-local-config.json&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Configuration locale vanityURLs JSON, &lt;code&gt;schema_version: &amp;quot;1.0&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;shell_helper&lt;/code&gt;, &lt;code&gt;lnk_cli&lt;/code&gt;, &lt;code&gt;local_publish&lt;/code&gt;, &lt;code&gt;registry&lt;/code&gt;, &lt;code&gt;repository&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Produit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;custom/v8s-local-config.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration locale vanityURLs JSON, &lt;code&gt;schema_version: &amp;quot;1.0&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Chemins du helper propres au poste et réglages de publication locale écrits par &lt;code&gt;npm run local-install&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Poste&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/vanityURLs/code/blob/main/defaults/v8s-local-config.json"&gt;&lt;code&gt;defaults/public/_headers&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Regles d&amp;rsquo;en-têtes pour assets statiques Cloudflare&lt;/td&gt;
 &lt;td&gt;Motif de chemin suivi de lignes d&amp;rsquo;en-têtes indentees&lt;/td&gt;
 &lt;td&gt;Produit ou surcharge d&amp;rsquo;instance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;











&lt;div class="not-prose my-5 rounded-lg border border-blue-200 dark:border-blue-800 bg-blue-50 dark:bg-blue-900/20 p-4"&gt;
 &lt;div class="flex gap-3"&gt;
 &lt;svg class="w-5 h-5 text-blue-500 dark:text-blue-400 shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/&gt;
 &lt;/svg&gt;
 &lt;div class="flex-1 min-w-0"&gt;
 &lt;p class="text-sm font-semibold text-blue-800 dark:text-blue-300 mb-1"&gt;Anciens noms de fichiers blocklist &lt;span class="ml-2 inline-flex items-center gap-1 rounded border border-amber-200 bg-amber-100 px-1.5 py-0.5 text-[0.65rem] font-semibold text-amber-700 dark:border-amber-800 dark:bg-amber-900/30 dark:text-amber-400"&gt;Modifié en 3.0.0&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Registre runtime</title><link>https://vanityurls.link/fr/docs/reference/runtime-registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/runtime-registry/</guid><description>&lt;p&gt;&lt;code&gt;build/v8s.json&lt;/code&gt; est le registre runtime génère et consomme par le Worker. Les humains modifient les fichiers source comme &lt;code&gt;custom/v8s-links.txt&lt;/code&gt;; le build valide et compile ces fichiers vers cette forme runtime.&lt;/p&gt;
&lt;h2 id="schéma-30"&gt;Schéma 3.0&lt;/h2&gt;
&lt;p&gt;Le schéma &lt;code&gt;3.0&lt;/code&gt; est d&amp;rsquo;abord arborescent :&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Champ&lt;/th&gt;
 &lt;th&gt;Rôle&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;schema_version&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Version du contrat du registre runtime, actuellement &lt;code&gt;3.0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;generated_at&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Horodatage du build&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;generated_timezone&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Fuseau horaire opérateur utilisé par les tableaux protégés pour afficher l&amp;rsquo;heure de build&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;default_state&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;État de cycle de vie par défaut, normalement &lt;code&gt;permanent&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;routing&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Carte état-vers-résultat utilisée par le Worker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tree&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Structure imbriquée canonique pour la résolution runtime&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;links[]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Tableau de compatibilite pour tableaux de bord, helpers locaux et revue&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Chaque noeud de &lt;code&gt;tree&lt;/code&gt; contient un objet &lt;code&gt;children&lt;/code&gt; et peut contenir un &lt;code&gt;link&lt;/code&gt;. Chaque &lt;code&gt;link&lt;/code&gt; garde les mêmes champs que dans &lt;code&gt;links[]&lt;/code&gt;, dont &lt;code&gt;slug&lt;/code&gt;, &lt;code&gt;match&lt;/code&gt;, &lt;code&gt;target&lt;/code&gt;, &lt;code&gt;state&lt;/code&gt;, les metadonnées et un &lt;code&gt;schedule&lt;/code&gt; optionnel.&lt;/p&gt;</description></item><item><title>Surcharges custom</title><link>https://vanityurls.link/fr/docs/reference/custom-overrides/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/custom-overrides/</guid><description>&lt;p&gt;Utilisez &lt;code&gt;custom/&lt;/code&gt; pour les fichiers propres à l&amp;rsquo;instance. Cela garde les déploiements faciles à mettre à jour pendant que les pages par défaut, la logique Worker, la politique source et les réglages locaux évoluent.&lt;/p&gt;
&lt;p&gt;Pour le raisonnement de mise à jour, lisez &lt;a href="https://vanityurls.link/fr/blog/keeping-vanityurls-upgradable-with-custom-overrides/"&gt;Garder vanityURLs facile à mettre à jour avec custom&lt;/a&gt;. Pour l&amp;rsquo;ordre de build et les artefacts générés, lisez &lt;a href="https://vanityurls.link/fr/docs/reference/configuration-files/"&gt;Fichiers de configuration&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="defaults-versus-custom"&gt;Defaults versus custom&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;defaults/&lt;/code&gt; est la base produit. &lt;code&gt;custom/&lt;/code&gt; est la couche de l&amp;rsquo;instance. Les fichiers dans &lt;code&gt;custom/&lt;/code&gt; remplacent certains defaults ou fournissent des données propres à l&amp;rsquo;instance qui doivent survivre aux mises à jour upstream.&lt;/p&gt;</description></item><item><title>Pages publiques et pages de statut</title><link>https://vanityurls.link/fr/docs/reference/public-pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/public-pages/</guid><description>&lt;p&gt;Utilisez &lt;code&gt;custom/public/&lt;/code&gt; lorsqu&amp;rsquo;une instance doit remplacer des pages publiques générées, ajouter des assets publics ou personnaliser les pages de statut des liens. Utilisez &lt;a href="https://vanityurls.link/fr/docs/reference/custom-overrides/"&gt;Surcharges custom&lt;/a&gt; pour la carte plus large des fichiers de configuration.&lt;/p&gt;
&lt;h2 id="carte-des-surcharges-publiques"&gt;Carte des surcharges publiques&lt;/h2&gt;











&lt;div class="not-prose my-5 rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-900/20 p-4"&gt;
 &lt;div class="flex gap-3"&gt;
 &lt;svg class="w-5 h-5 text-amber-500 dark:text-amber-400 shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/&gt;
 &lt;/svg&gt;
 &lt;div class="flex-1 min-w-0"&gt;
 &lt;p class="text-sm font-semibold text-amber-800 dark:text-amber-300 mb-1"&gt;Évitez de remplacer les assets publics partagés trop facilement&lt;/p&gt;</description></item><item><title>Glossaire</title><link>https://vanityurls.link/fr/docs/reference/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/glossary/</guid><description>&lt;p&gt;Le glossaire definit les termes et abreviations utilises sur le site web.&lt;/p&gt;
&lt;section id="terms"&gt;
 &lt;h2&gt;Termes&lt;/h2&gt;
 &lt;dl&gt;
 &lt;dt&gt;&lt;dfn id="access-application"&gt;Application Access&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une application Cloudflare Zero Trust qui protège certains chemins, comme les chemins stats localisés &lt;code&gt;/en/_stats/&lt;/code&gt; et &lt;code&gt;/fr/_stats/&lt;/code&gt;, ainsi que &lt;code&gt;/_tests/*&lt;/code&gt;, avant que le Worker serve ces pages.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="access-policy"&gt;Politique Access&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une règle Cloudflare Zero Trust qui decide quelles identités peuvent atteindre une application Access protégée.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="alias"&gt;Alias&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le chemin court ou mot-cle utilise pour atteindre une destination configuree.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="badge"&gt;Badge&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un lien visuel compact qui annonce, previsualise ou partage un alias.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="block-policy"&gt;Politique de blocage&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Les règles propres à l&amp;rsquo;instance dans &lt;code&gt;custom/v8s-policies.json&lt;/code&gt; qui bloquent les domaines dangereux, mots-cles, chemins de scanner ou trafic indesirable avant la recherche de redirection.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="build-artifact"&gt;Artefact de build&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un fichier génère sous &lt;code&gt;build/&lt;/code&gt; ou &lt;code&gt;src/&lt;/code&gt;. Modifiez les fichiers source dans &lt;code&gt;custom/&lt;/code&gt; ou &lt;code&gt;defaults/&lt;/code&gt;, puis reconstruisez au lieu de modifier les artefacts directement.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="custom-overlay"&gt;Overlay custom&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;La couche propre à l&amp;rsquo;instance sous &lt;code&gt;custom/&lt;/code&gt;. Elle remplace ou éténd les defaults produit sans modifier les fichiers upstream.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="default-target"&gt;Cible par défaut&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;La destination fallback utilisee par un lien planifié lorsqu&amp;rsquo;aucune règle horaire n&amp;rsquo;est active.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="destination"&gt;Destination&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;La longue URL vers laquelle un lien court redirige. Dans le format de lien, elle est stockee dans la colonne &lt;code&gt;target&lt;/code&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="generated-registry"&gt;Registre génère&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le registre runtime de redirection écrit dans &lt;code&gt;build/v8s.json&lt;/code&gt; pendant le build à partir des liens, horaires, politiques et configurations.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="generated-page"&gt;Page generee&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une page emise par le redirecteur pour l&amp;rsquo;expansion, le repli, le statut de lien, les pages legales, la confidentialite ou d&amp;rsquo;autres surfaces publiques runtime.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="hardening"&gt;Hardening&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Réduction de la surface d&amp;rsquo;attaque disponible en désactivant les fonctionnalités inutilisées, en resserrant les politiques navigateur et en gardant les contrôles de sécurité dans une source de vérité claire.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="identity-provider"&gt;Fournisseur d&amp;#39;identité&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une source de connexion utilisee par Cloudflare Access, comme GitHub, Google ou un code à usage unique, pour confirmer qui essaie d&amp;rsquo;acceder à une page protégée.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="idempotent"&gt;Idempotent&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une commande ou opération qui peut être relancee avec les mêmes entrées sans créer d&amp;rsquo;état en double ni exiger une nouvelle installation. Dans vanityURLs, &lt;code&gt;npm run setup&lt;/code&gt; relit les réponses existantes et met à jour les mêmes fichiers génères.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="idna"&gt;IDNA&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Internationalized Domain Names in Applications, le standard qui permet aux logiciels de représenter les noms de domaine non ASCII dans une forme ASCII compatible avec DNS.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="link-registry"&gt;Registre de liens&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;L&amp;rsquo;ensemble des enregistrements de liens courts utilisés par vanityURLs. Les humains modifient &lt;code&gt;custom/v8s-links.txt&lt;/code&gt;; le build produit le registre génère consomme par le Worker.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="operator"&gt;Operateur&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;La personne, l&amp;rsquo;équipe ou l&amp;rsquo;organisation responsable de l&amp;rsquo;instance vanityURLs, des pages publiques, des contacts de confiance et de la configuration des pages légales.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="owner-label"&gt;Libelle owner&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une courte valeur interne dans &lt;code&gt;v8s-links.txt&lt;/code&gt; qui identifie la personne ou l&amp;rsquo;équipe responsable d&amp;rsquo;un lien.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="punycode"&gt;Punycode&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;L&amp;rsquo;encodage ASCII utilisé par IDNA pour les libellés de domaine internationalisés, généralement visible avec le préfixe &lt;code&gt;xn--&lt;/code&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="random-slug"&gt;Slug aléatoire&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un slug génère par &lt;code&gt;lnk&lt;/code&gt; lorsque vous fournissez une destination sans choisir vous-même le chemin court.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="redirect"&gt;Redirection&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une requete de lien court qui resout vers une destination configuree.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="route"&gt;Route&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le mappage Cloudflare Workers qui envoie les requêtes pour votre domaine court vers le Worker vanityURLs.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="runtime"&gt;Runtime&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le Worker Cloudflare et les assets statiques qui servent les redirections et les pages après le build et le déploiement.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="scheduled-link"&gt;Lien planifié&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un lien court dont la destination peut changer selon le jour, la fenêtre horaire et le fuseau horaire avec des règles &lt;code&gt;@schedule&lt;/code&gt; inline dans &lt;code&gt;v8s-links.txt&lt;/code&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="short-domain"&gt;Domaine court&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le domaine utilise pour les redirections, comme &lt;code&gt;v8s.link&lt;/code&gt; ou &lt;code&gt;go.example.com&lt;/code&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="slug"&gt;Slug&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le chemin après votre domaine court. Dans &lt;code&gt;https://v8s.link/docs&lt;/code&gt;, le slug est &lt;code&gt;docs&lt;/code&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="splat-link"&gt;Lien splat&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un lien stocke comme &lt;code&gt;slug/*&lt;/code&gt; qui transmet le reste du chemin dans une destination contenant &lt;code&gt;:splat&lt;/code&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="tag"&gt;Tag&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un libellé séparé par virgules sur une ligne de lien, utilise pour grouper les liens, décrire l&amp;rsquo;intention ou choisir des longueurs de slugs aléatoires propres aux tags.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="worker"&gt;Worker&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;L&amp;rsquo;application Cloudflare Workers qui exécute le redirecteur vanityURLs.&lt;/dd&gt;
 &lt;/dl&gt;
&lt;/section&gt;

&lt;section id="abbreviations"&gt;
 &lt;h2&gt;Abreviations&lt;/h2&gt;
 &lt;dl&gt;
 &lt;dt&gt;&lt;dfn id="adr"&gt;&lt;abbr class="no-underline" title="Architecture Decision Record"&gt;ADR&lt;/abbr&gt; &amp;larr; Architecture Decision Record&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un court document qui enregistre une décision d&amp;rsquo;implementation et sa raison.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="api"&gt;&lt;abbr class="no-underline" title="Application Programming Interface"&gt;API&lt;/abbr&gt; &amp;larr; Application Programming Interface&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une interface documentee qu&amp;rsquo;un logiciel peut appeler, comme un endpoint analytics ou fournisseur.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="cli"&gt;&lt;abbr class="no-underline" title="Command Line Interface"&gt;CLI&lt;/abbr&gt; &amp;larr; Command Line Interface&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une interface de commande en terminal, comme le helper &lt;code&gt;lnk&lt;/code&gt; utilise pour gerer les liens.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="ci"&gt;&lt;abbr class="no-underline" title="Continuous Integration"&gt;CI&lt;/abbr&gt; &amp;larr; Continuous Integration&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Des verifications automatisees lancees avant fusion ou déploiement.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="csp"&gt;&lt;abbr class="no-underline" title="Content Security Policy"&gt;CSP&lt;/abbr&gt; &amp;larr; Content Security Policy&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Des règles de sécurité navigateur qui limitent les scripts, styles, images et connexions qu&amp;rsquo;une page peut utiliser.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="dns"&gt;&lt;abbr class="no-underline" title="Domain Name System"&gt;DNS&lt;/abbr&gt; &amp;larr; Domain Name System&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le système qui associe les noms d&amp;rsquo;hote aux destinations réseau et permet a Cloudflare de router votre domaine court.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="gdpr"&gt;&lt;abbr class="no-underline" title="General Data Protection Regulation"&gt;GDPR&lt;/abbr&gt; &amp;larr; General Data Protection Regulation&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Reglement europeen sur la protection des données qui peut concerner les opérateurs traitant des données personnelles de visiteurs de l&amp;rsquo;UE.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="html"&gt;&lt;abbr class="no-underline" title="HyperText Markup Language"&gt;HTML&lt;/abbr&gt; &amp;larr; HyperText Markup Language&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le langage de balisage utilise pour les pages web.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="http"&gt;&lt;abbr class="no-underline" title="Hypertext Transfer Protocol"&gt;HTTP&lt;/abbr&gt; &amp;larr; Hypertext Transfer Protocol&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le protocole utilisé par les navigateurs, clients et Workers pour demander et retourner des ressources web.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="ip"&gt;&lt;abbr class="no-underline" title="Internet Protocol"&gt;IP&lt;/abbr&gt; &amp;larr; Internet Protocol&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;L&amp;rsquo;adressage réseau utilise pour router le trafic; les analytics et logs peuvent inclure des adresses IP visiteur.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="json"&gt;&lt;abbr class="no-underline" title="JavaScript Object Notation"&gt;JSON&lt;/abbr&gt; &amp;larr; JavaScript Object Notation&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un format de données structurees utilisé par vanityURLs pour les registres génères et les fichiers de configuration.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="otp"&gt;&lt;abbr class="no-underline" title="One-Time PIN"&gt;OTP&lt;/abbr&gt; &amp;larr; One-Time PIN&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un code de connexion temporaire que Cloudflare Access peut envoyér directement à une adresse courriel autorisee.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="qr"&gt;&lt;abbr class="no-underline" title="Quick Response"&gt;QR&lt;/abbr&gt; &amp;larr; Quick Response&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un format de code-barres scannable souvent utilise pour partager des liens courts sur papier ou dans des diapositives.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="rfc"&gt;&lt;abbr class="no-underline" title="Request for Comments"&gt;RFC&lt;/abbr&gt; &amp;larr; Request for Comments&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une publication de standard ou d&amp;rsquo;information, comme RFC 9116 pour &lt;code&gt;security.txt&lt;/code&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="sla"&gt;&lt;abbr class="no-underline" title="Service-Level Agreement"&gt;SLA&lt;/abbr&gt; &amp;larr; Service-Level Agreement&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un engagement de service formel; la documentation vanityURLs recommande de ne pas en promettre un à la legere.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="sri"&gt;&lt;abbr class="no-underline" title="Subresource Integrity"&gt;SRI&lt;/abbr&gt; &amp;larr; Subresource Integrity&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un contrôle d&amp;rsquo;intégrité navigateur qui permet au HTML d&amp;rsquo;épingler le hash attendu d&amp;rsquo;un script ou d&amp;rsquo;une feuille de style chargée.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="tls"&gt;&lt;abbr class="no-underline" title="Transport Layer Security"&gt;TLS&lt;/abbr&gt; &amp;larr; Transport Layer Security&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Le protocole de chiffrement derrière HTTPS.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="url"&gt;&lt;abbr class="no-underline" title="Uniform Resource Locator"&gt;URL&lt;/abbr&gt; &amp;larr; Uniform Resource Locator&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;L&amp;rsquo;adresse d&amp;rsquo;une ressource web, incluant le protocole, l&amp;rsquo;hote, le chemin et une eventuelle query string.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="utm"&gt;&lt;abbr class="no-underline" title="Urchin Tracking Module"&gt;UTM&lt;/abbr&gt; &amp;larr; Urchin Tracking Module&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Des paramêtres de campagne dans l&amp;rsquo;URL utilisés par les outils analytics.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="vdp"&gt;&lt;abbr class="no-underline" title="Vulnerability Disclosure Policy"&gt;VDP&lt;/abbr&gt; &amp;larr; Vulnerability Disclosure Policy&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Une politique qui explique comment les chercheurs en sécurité devraient signaler les vulnérabilités.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="waf"&gt;&lt;abbr class="no-underline" title="Web Application Firewall"&gt;WAF&lt;/abbr&gt; &amp;larr; Web Application Firewall&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Des règles edge Cloudflare qui bloquent le trafic suspect ou abusif avant qu&amp;rsquo;il atteigne le Worker.&lt;/dd&gt;
 &lt;dt&gt;&lt;dfn id="yaml"&gt;&lt;abbr class="no-underline" title="YAML Ain&amp;#39;t Markup Language"&gt;YAML&lt;/abbr&gt; &amp;larr; YAML Ain&amp;#39;t Markup Language&lt;/dfn&gt;&lt;/dt&gt;
 &lt;dd&gt;Un format de données structurees lisible par les humains, utilisé par le site de documentation pour les données et la configuration.&lt;/dd&gt;
 &lt;/dl&gt;
&lt;/section&gt;</description></item><item><title>Fuseaux horaires</title><link>https://vanityurls.link/fr/docs/reference/timezones/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/timezones/</guid><description>&lt;p&gt;vanityURLs accepte les noms de fuseaux horaires IANA, ainsi que &lt;code&gt;UTC&lt;/code&gt;. N&amp;rsquo;entrez pas de décalage numérique comme &lt;code&gt;-4&lt;/code&gt;, &lt;code&gt;-5&lt;/code&gt; ou &lt;code&gt;GMT-0400&lt;/code&gt;; un décalage ne décrit pas les changements d&amp;rsquo;heure avancée.&lt;/p&gt;
&lt;p&gt;Utilisez le fuseau basé sur un lieu qui correspond à l&amp;rsquo;opérateur ou au lien planifié. Par exemple, l&amp;rsquo;heure de l&amp;rsquo;Est devrait généralement être &lt;code&gt;America/Toronto&lt;/code&gt; ou &lt;code&gt;America/New_York&lt;/code&gt;. La base de fuseaux horaires JavaScript &lt;code&gt;Intl&lt;/code&gt; gère le passage entre EST et EDT.&lt;/p&gt;</description></item><item><title>Internationalisation (i18n)</title><link>https://vanityurls.link/fr/docs/reference/i18n/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/i18n/</guid><description>&lt;p&gt;L&amp;rsquo;internationalisation (i18n) est le processus d&amp;rsquo;ingénierie logicielle qui consiste à concevoir une application pour qu&amp;rsquo;elle puisse facilement s&amp;rsquo;adapter à différentes langues sans changements structurels de code. vanityURLs détecte la langue du navigateur dans la requête et envoie les pages web localisées en anglais, français, allemand, italien et espagnol lorsqu&amp;rsquo;elles sont disponibles. La page anglaise est envoyée lorsqu&amp;rsquo;il n&amp;rsquo;existe pas de page localisée pour le code de langue ISO demandé.&lt;/p&gt;
&lt;h2 id="langues-supportées"&gt;Langues supportées&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Code&lt;/th&gt;
 &lt;th&gt;Langue&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;en&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Anglais&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;fr&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Français&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;es&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Espagnol&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;it&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Italien&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;de&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Allemand&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="pages-localisées"&gt;Pages localisées&lt;/h2&gt;
&lt;p&gt;Les pages publiques par défaut sont disponibles dans les répertoires de langue localisés sous &lt;code&gt;defaults/public/{language}/&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Format des liens</title><link>https://vanityurls.link/fr/docs/reference/link-format/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/link-format/</guid><description>&lt;p&gt;&lt;code&gt;v8s-links.txt&lt;/code&gt; est la source de vérité humaine pour les liens. Chaque ligne non vide et non commentee est séparée par des pipes :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;slug|target|state|title|description|tags|owner|expires_at|notes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Champ&lt;/th&gt;
 &lt;th&gt;Requis&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;slug&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;oui&lt;/td&gt;
 &lt;td&gt;Chemin sans &lt;code&gt;/&lt;/code&gt; initial&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;target&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;oui&lt;/td&gt;
 &lt;td&gt;URL &lt;code&gt;http&lt;/code&gt; ou &lt;code&gt;https&lt;/code&gt;, ou hostname normalise vers &lt;code&gt;https://&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;state&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;non&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;permanent&lt;/code&gt;, &lt;code&gt;ephemeral&lt;/code&gt;, &lt;code&gt;expired&lt;/code&gt;, &lt;code&gt;disabled&lt;/code&gt;, &lt;code&gt;maintenance&lt;/code&gt;, &lt;code&gt;deactivated&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;non&lt;/td&gt;
 &lt;td&gt;Titre pour le dashboard&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;non&lt;/td&gt;
 &lt;td&gt;Usage humain du lien&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;non&lt;/td&gt;
 &lt;td&gt;Tags séparés par virgules&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;owner&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;recommande&lt;/td&gt;
 &lt;td&gt;Étiquette de responsabilité&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;expires_at&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;non&lt;/td&gt;
 &lt;td&gt;Date ou timestamp ISO&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;notes&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;non&lt;/td&gt;
 &lt;td&gt;Notes internes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="liens-exacts"&gt;Liens exacts&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;social/x|https://x.com/vanityURLs|permanent|X / Twitter|Profil social|social,x|v8s||
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le lien resout seulement &lt;code&gt;/social/x&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Politique et blocklist</title><link>https://vanityurls.link/fr/docs/reference/policy-blocklist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/policy-blocklist/</guid><description>&lt;p&gt;vanityURLs édite la politique source comme &lt;code&gt;v8s-policies.json&lt;/code&gt; et déploie la politique runtime comme &lt;code&gt;build/v8s-blocklist.json&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Les noms sont décrits comme politique source et artefact runtime de blocklist dans la documentation parce que les noms de fichiers actuels sont faciles à confondre. Un futur nettoyage avec rupture devrait utiliser des noms appariés plus clairs pour le fichier source et le fichier généré.&lt;/p&gt;
&lt;p&gt;Les protections runtime intégrées sont documentées dans &lt;a href="https://vanityurls.link/fr/docs/reference/runtime-security/"&gt;Sécurité runtime&lt;/a&gt;. Utilisez &lt;a href="https://vanityurls.link/fr/docs/customize/blocklist/"&gt;Politique et blocklist&lt;/a&gt; lorsque vous avez besoin du workflow opérateur pour changer la politique de l&amp;rsquo;instance.&lt;/p&gt;</description></item><item><title>Structure du dépôt</title><link>https://vanityurls.link/fr/docs/reference/repository-layout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/repository-layout/</guid><description>&lt;p&gt;Une instance vanityURLs garde les fichiers détenus par le produit séparés des fichiers détenus par l&amp;rsquo;instance. C&amp;rsquo;est ce qui rend &lt;code&gt;npm run upgrade&lt;/code&gt; pratique : upstream peut rafraîchir &lt;code&gt;defaults/&lt;/code&gt; et &lt;code&gt;scripts/&lt;/code&gt;, tandis que vos liens, votre marque, vos choix de politique et vos réglages Cloudflare restent sous votre contrôle.&lt;/p&gt;
&lt;p&gt;Le dépôt public &lt;a href="https://github.com/vanityURLs/v8s.link"&gt;v8s.link&lt;/a&gt; suit cette structure :&lt;/p&gt;
&lt;div class="filetree not-prose" role="tree" aria-label="File tree"&gt;&lt;ul class="filetree-root"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;package.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;scripts npm et dépendances&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;package-lock.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;graphe de dépendances verrouillé&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;wrangler.toml&lt;/span&gt;&lt;span class="filetree-annotation"&gt;réglages de déploiement Cloudflare Worker&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;defaults/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;base produit rafraîchie par upgrade&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;public/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;pages, assets, badges, pages d&amp;#39;état et headers par défaut&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;_headers&lt;/span&gt;&lt;span class="filetree-annotation"&gt;headers cache et no-index des assets statiques&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;robots.txt&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;style.css&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-js" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;script.js&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-links.txt&lt;/span&gt;&lt;span class="filetree-annotation"&gt;inventaire de liens et horaires inline de départ&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-policies.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;politique trust-and-safety par défaut&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-blocklist-categories.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;libellés de catégories de politique&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-language-metadata.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;libellés de pages générées localisées&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;legal/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;contenu légal et confiance généré par défaut&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-legal-content.json&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-site-config.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;langues, marque et valeurs opérateur par défaut&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-local-config.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;réglages par défaut du helper local&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;custom/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;surcharges propres à l&amp;#39;instance&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;public/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;marque, pages, assets et headers de l&amp;#39;instance&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;_headers&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;robots.txt&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;style.css&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-js" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;script.js&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-links.txt&lt;/span&gt;&lt;span class="filetree-annotation"&gt;source de vérité humaine des liens&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-site-config.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;langues, marque, valeurs opérateur et contacts&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;scripts/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;outillage produit&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;workers/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;source canonique du Worker et tests&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;worker.mjs&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;worker.test.mjs&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;lnk&lt;/span&gt;&lt;span class="filetree-annotation"&gt;CLI pour liens, horaires et politique&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;build.mjs&lt;/span&gt;&lt;span class="filetree-annotation"&gt;build defaults plus custom vers la sortie de déploiement&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;setup.mjs&lt;/span&gt;&lt;span class="filetree-annotation"&gt;npm run setup&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;upgrade.mjs&lt;/span&gt;&lt;span class="filetree-annotation"&gt;npm run upgrade&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;local-install.mjs&lt;/span&gt;&lt;span class="filetree-annotation"&gt;setup du helper local&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-sh" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s.sh&lt;/span&gt;&lt;span class="filetree-annotation"&gt;helper local en lecture seule&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;src/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;entrée Worker générée depuis scripts/workers&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;worker.mjs&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;build/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;sortie de déploiement générée&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;registre runtime de redirection&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-blocklist.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;artefact runtime de politique&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-config" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;v8s-site-config.json&lt;/span&gt;&lt;span class="filetree-annotation"&gt;configuration runtime du site&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;_headers&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;index.html&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;_stats/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;shell stats protégé&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;index.html&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;_tests/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;page de test runtime protégée&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;index.html&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem" aria-expanded="true"&gt;
&lt;div class="filetree-row filetree-folder-row"&gt;&lt;svg class="filetree-icon filetree-folder-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name filetree-folder-name"&gt;en/&lt;/span&gt;&lt;span class="filetree-annotation"&gt;pages publiques et assets localisés&lt;/span&gt;&lt;/div&gt;&lt;ul class="filetree-children" role="group"&gt;
&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;index.html&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;404.html&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;expired.html&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;disabled.html&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;li class="filetree-item" role="treeitem"&gt;
&lt;div class="filetree-row filetree-file-row"&gt;
&lt;svg class="filetree-icon filetree-file-default" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414A1 1 0 0119 9.414V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="filetree-name"&gt;maintenance.html&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;

&lt;/ul&gt;&lt;/div&gt;

&lt;h2 id="defaults-produit"&gt;Defaults produit&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;defaults/&lt;/code&gt; est la base produit. Il contient les pages publiques, pages d&amp;rsquo;état localisées, badges de redirection, pages de politique, icônes, shell stats protégé, liens de départ, horaires inline de départ, politique par défaut, configuration de site et defaults du helper local.&lt;/p&gt;</description></item><item><title>Approche sécurité du runtime</title><link>https://vanityurls.link/fr/docs/reference/runtime-security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/runtime-security/</guid><description>&lt;p&gt;Le runtime vanityURLs est volontairement petit : valider le registre génère, servir les assets statiques, lire &lt;code&gt;v8s.json&lt;/code&gt;, puis retourner un petit nombre de résultats possibles.&lt;/p&gt;
&lt;p&gt;Pour le raisonnement de design, lisez &lt;a href="https://vanityurls.link/fr/blog/runtime-security-for-a-small-redirector/"&gt;Sécurité runtime pour un petit redirecteur&lt;/a&gt;. Cette page est la référence compacte des contrôles a conserver.&lt;/p&gt;
&lt;h2 id="runtime-defensif"&gt;Runtime defensif&lt;/h2&gt;
&lt;p&gt;Le Worker garde un chemin runtime etroit :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;seules les requêtes publiques &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;HEAD&lt;/code&gt;, et &lt;code&gt;OPTIONS&lt;/code&gt; silencieuses sont acceptees, plus &lt;code&gt;POST /lookup/resolve&lt;/code&gt; pour la resolution lookup et le beacon dedie &lt;code&gt;POST /_analytics/lookup&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;l&amp;rsquo;accès direct a &lt;code&gt;/v8s.json&lt;/code&gt;, &lt;code&gt;/v8s-blocklist.json&lt;/code&gt;, et &lt;code&gt;/v8s-site-config.json&lt;/code&gt; retourne 404&lt;/li&gt;
&lt;li&gt;les redirections acceptent seulement les cibles &lt;code&gt;http:&lt;/code&gt; et &lt;code&gt;https:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;les cibles avec identifiants, hostname manquant, caracteres de contrôle, ou protocoles non supportes échouent ferme&lt;/li&gt;
&lt;li&gt;les valeurs splat sont encodees segment par segment avant insertion&lt;/li&gt;
&lt;li&gt;les états de cycle de vie passent par des règles de routage explicites&lt;/li&gt;
&lt;li&gt;les chemins opérationnels protégés verifient les JWT Cloudflare Access et échouent ferme si Access n&amp;rsquo;est pas configure&lt;/li&gt;
&lt;li&gt;les probes scanner retournent un 404 simple no-store avant lookup ou analytics&lt;/li&gt;
&lt;li&gt;les analytics sont envoyés avec &lt;code&gt;ctx.waitUntil()&lt;/code&gt; pour qu&amp;rsquo;une panne fournisseur ne ralentisse pas les redirections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les protections runtime par défaut incluent :&lt;/p&gt;</description></item><item><title>Modèle de sécurité</title><link>https://vanityurls.link/fr/docs/reference/security-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/security-model/</guid><description>&lt;p&gt;Cette page est écrite pour les revues de sécurité. &lt;a href="https://vanityurls.link/fr/docs/reference/runtime-security/"&gt;Sécurité runtime&lt;/a&gt; explique comment le Worker se comporte. &lt;a href="https://vanityurls.link/fr/docs/customize/network-protection/"&gt;Protection réseau&lt;/a&gt; et &lt;a href="https://vanityurls.link/fr/docs/customize/access-control/"&gt;Contrôle d&amp;rsquo;accès&lt;/a&gt; expliquent ce qu&amp;rsquo;un opérateur configure. Cette page relie ces vues en nommant les frontières de confiance et en montrant où chaque contrôle est appliqué : build, runtime Worker ou edge Cloudflare.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;erreur de revue la plus courante est de considérer qu&amp;rsquo;un contrôle appliqué à l&amp;rsquo;edge ou au build manque parce qu&amp;rsquo;il n&amp;rsquo;est pas dans le code du Worker. La matrice ci-dessous rend cette séparation explicite.&lt;/p&gt;</description></item><item><title>Liens planifiés</title><link>https://vanityurls.link/fr/docs/reference/schedules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/schedules/</guid><description>&lt;p&gt;Les liens planifiés permettent à un slug stable de pointer ailleurs pendant certaines plages horaires. Gardez la cible normale sur la ligne du lien dans &lt;code&gt;v8s-links.txt&lt;/code&gt;, puis ajoutez des directives &lt;code&gt;@schedule&lt;/code&gt; indentées sous cette ligne.&lt;/p&gt;
&lt;p&gt;Pour les cas d&amp;rsquo;usage et la logique de décision, lisez &lt;a href="https://vanityurls.link/fr/blog/when-scheduled-links-are-useful/"&gt;Quand les liens planifiés sont utiles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Les planifications s&amp;rsquo;appliquent actuellement aux liens exacts. Les liens splat restent bases sur le chemin.&lt;/p&gt;
&lt;h2 id="forme-inline"&gt;Forme inline&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hangout|https://discord.gg/personal|permanent|Hangout|Community hangout|community|team||
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @schedule timezone=America/Toronto
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @schedule rule=work days=mon,tue,wed,thu,fri from=09:00 to=17:00 target=https://zoom.us/j/work
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La cible de la ligne du lien est la cible de repli. Les règles d&amp;rsquo;horaire choisissent seulement une cible temporaire pendant les fenêtres correspondantes.&lt;/p&gt;</description></item><item><title>Mettre à jour une instance</title><link>https://vanityurls.link/fr/docs/reference/upgrading/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vanityurls.link/fr/docs/reference/upgrading/</guid><description>&lt;p&gt;Utilisez &lt;code&gt;npm run upgrade&lt;/code&gt; pour rafraîchir une instance vanityURLs existante. La commande met à jour les fichiers détenus par le produit et laisse vos fichiers propres à l&amp;rsquo;instance tranquilles.&lt;/p&gt;
&lt;p&gt;Lancez-la depuis un worktree propre :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La commande récupère la source upstream configurée, rafraîchit les fichiers produit comme &lt;code&gt;defaults/&lt;/code&gt; et &lt;code&gt;scripts/&lt;/code&gt;, lance les vérifications du projet et laisse un diff Git normal à réviser. Si les définitions de dépendances changent pendant le rafraîchissement, l&amp;rsquo;upgrade lance &lt;code&gt;npm install&lt;/code&gt; avant la validation afin que l&amp;rsquo;outillage local corresponde aux fichiers produit mis à jour.&lt;/p&gt;</description></item></channel></rss>