{"id":166974,"date":"2025-10-06T09:00:00","date_gmt":"2025-10-06T09:00:00","guid":{"rendered":"https:\/\/gtechgroup.it\/blog\/redirection-regex-redirect-avanzati-pattern\/"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T22:00:00","slug":"redirection-regex-redirect-avanzati-pattern","status":"publish","type":"post","link":"https:\/\/gtechgroup.it\/blog\/redirection-regex-redirect-avanzati-pattern\/","title":{"rendered":"Regex e Redirect Avanzati con Redirection: Pattern Matching"},"content":{"rendered":"<h2>Le Espressioni Regolari: Il Superpotere dei Redirect<\/h2>\n<p>Le espressioni regolari (regex) sono uno degli strumenti pi&#249; potenti a disposizione di un webmaster, e il plugin Redirection le supporta pienamente. Con una singola regola regex, puoi gestire centinaia o migliaia di redirect che seguono un pattern comune, risparmiando tempo e mantenendo la configurazione pulita e gestibile. Tuttavia, le regex possono anche essere pericolose: una regola mal scritta pu&#242; catturare URL che non dovrebbe, causando redirect indesiderati e problemi di navigazione.<\/p>\n<p>In questa guida, ti insegneremo a padroneggiare le espressioni regolari nel contesto dei redirect WordPress. Partiremo dalle basi e arriveremo a pattern avanzati, con esempi pratici e testati che potrai applicare direttamente al tuo sito.<\/p>\n<h2>Fondamenti delle Espressioni Regolari<\/h2>\n<p>Un&#8217;espressione regolare &#232; un pattern di testo che descrive un insieme di stringhe. Invece di specificare un URL esatto come <code>\/vecchia-pagina\/<\/code>, una regex pu&#242; descrivere un pattern come &#8220;qualsiasi URL che inizia con \/blog\/ seguito da un anno a 4 cifre&#8221;. Vediamo i caratteri e i costrutti fondamentali:<\/p>\n<p><strong>Il punto (<code>.<\/code>):<\/strong> corrisponde a qualsiasi singolo carattere. Ad esempio, <code>p.gina<\/code> corrisponde a &#8220;pagina&#8221;, &#8220;pugina&#8221;, &#8220;p1gina&#8221;, ecc.<\/p>\n<p><strong>L&#8217;asterisco (<code>*<\/code>):<\/strong> indica &#8220;zero o pi&#249; ripetizioni&#8221; del carattere precedente. <code>ab*c<\/code> corrisponde a &#8220;ac&#8221;, &#8220;abc&#8221;, &#8220;abbc&#8221;, &#8220;abbbc&#8221;, ecc.<\/p>\n<p><strong>Il pi&#249; (<code>+<\/code>):<\/strong> indica &#8220;una o pi&#249; ripetizioni&#8221; del carattere precedente. <code>ab+c<\/code> corrisponde a &#8220;abc&#8221;, &#8220;abbc&#8221;, &#8220;abbbc&#8221;, ma non a &#8220;ac&#8221;.<\/p>\n<p><strong>Il punto interrogativo (<code>?<\/code>):<\/strong> indica &#8220;zero o una ripetizione&#8221;. <code>colou?r<\/code> corrisponde sia a &#8220;color&#8221; che a &#8220;colour&#8221;.<\/p>\n<p><strong>Le parentesi quadre (<code>[]<\/code>):<\/strong> definiscono un insieme di caratteri. <code>[aeiou]<\/code> corrisponde a qualsiasi vocale. <code>[0-9]<\/code> corrisponde a qualsiasi cifra. <code>[a-z]<\/code> corrisponde a qualsiasi lettera minuscola.<\/p>\n<p><strong>Il caret (<code>^<\/code>):<\/strong> indica l&#8217;inizio della stringa. <code>^\/blog\/<\/code> corrisponde solo agli URL che iniziano con &#8220;\/blog\/&#8221;.<\/p>\n<p><strong>Il dollaro (<code>$<\/code>):<\/strong> indica la fine della stringa. <code>\/contatti\/$<\/code> corrisponde solo agli URL che terminano esattamente con &#8220;\/contatti\/&#8221;.<\/p>\n<p><strong>Le parentesi tonde (<code>()<\/code>):<\/strong> creano un &#8220;gruppo di cattura&#8221;. Il testo catturato pu&#242; essere riutilizzato nell&#8217;URL di destinazione tramite i riferimenti <code>$1<\/code>, <code>$2<\/code>, ecc.<\/p>\n<p><strong>L&#8217;escape (<code><\/code>):<\/strong> rende letterale un carattere speciale. <code>.<\/code> corrisponde a un punto reale, non a &#8220;qualsiasi carattere&#8221;.<\/p>\n<h2>Attivare le Regex in Redirection<\/h2>\n<p>Per creare un redirect con espressione regolare in Redirection, devi attivare esplicitamente l&#8217;opzione regex. Nel modulo di creazione del redirect, espandi le opzioni avanzate cliccando sull&#8217;icona dell&#8217;ingranaggio. Vedrai un checkbox &#8220;Regex&#8221;: attivalo per abilitare il supporto alle espressioni regolari nel campo Source URL.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gtechgroup.it\/blog\/wp-content\/uploads\/2026\/05\/rd-02-options.png\" alt=\"Opzioni avanzate di Redirection con attivazione regex\" class=\"wp-image aligncenter size-full\" \/><\/p>\n<p>Quando la regex &#232; attiva, Redirection tratter&#224; il campo Source URL come un&#8217;espressione regolare e non come un URL letterale. Questo significa che i caratteri speciali (<code>.<\/code>, <code>*<\/code>, <code>+<\/code>, <code>?<\/code>, ecc.) verranno interpretati come operatori regex e non come caratteri normali.<\/p>\n<h2>Esempi Pratici: Dal Semplice al Complesso<\/h2>\n<h3>Esempio 1: Rimuovere una directory dal percorso<\/h3>\n<p>Hai spostato tutti gli articoli da <code>\/news\/titolo-articolo\/<\/code> a <code>\/blog\/titolo-articolo\/<\/code>. Invece di creare un redirect per ogni articolo, puoi usare una singola regex:<\/p>\n<p><strong>Source URL:<\/strong> <code>^\/news\/(.+)$<\/code><br \/>\n<strong>Target URL:<\/strong> <code>\/blog\/$1<\/code><\/p>\n<p>Il gruppo di cattura <code>(.+)<\/code> cattura tutto ci&#242; che segue <code>\/news\/<\/code> e lo rende disponibile come <code>$1<\/code> nell&#8217;URL di destinazione. Cos&#236;, <code>\/news\/guida-wordpress\/<\/code> viene reindirizzato a <code>\/blog\/guida-wordpress\/<\/code>, <code>\/news\/seo-2026\/<\/code> a <code>\/blog\/seo-2026\/<\/code>, e cos&#236; via.<\/p>\n<h3>Esempio 2: Rimuovere la data dai permalink<\/h3>\n<p>I tuoi permalink contenevano anno e mese (es. <code>\/2024\/03\/titolo-articolo\/<\/code>) e ora usi solo il titolo (<code>\/titolo-articolo\/<\/code>):<\/p>\n<p><strong>Source URL:<\/strong> <code>^\/(d{4})\/(d{2})\/(.+)$<\/code><br \/>\n<strong>Target URL:<\/strong> <code>\/$3<\/code><\/p>\n<p>Qui usiamo tre gruppi di cattura: <code>(d{4})<\/code> per l&#8217;anno a 4 cifre, <code>(d{2})<\/code> per il mese a 2 cifre e <code>(.+)<\/code> per il titolo. Nell&#8217;URL di destinazione, usiamo solo <code>$3<\/code> (il titolo), scartando anno e mese.<\/p>\n<h3>Esempio 3: Aggiungere un prefisso di lingua<\/h3>\n<p>Vuoi reindirizzare le pagine italiane verso un sotto-percorso con prefisso lingua:<\/p>\n<p><strong>Source URL:<\/strong> <code>^\/(chi-siamo|servizi|contatti|portfolio)\/?$<\/code><br \/>\n<strong>Target URL:<\/strong> <code>\/it\/$1\/<\/code><\/p>\n<p>Questo redirect usa l&#8217;operatore pipe (<code>|<\/code>) per definire alternative. Corrisponde a <code>\/chi-siamo\/<\/code>, <code>\/servizi\/<\/code>, <code>\/contatti\/<\/code> o <code>\/portfolio\/<\/code> e li reindirizza ai corrispettivi sotto <code>\/it\/<\/code>.<\/p>\n<h3>Esempio 4: Normalizzare gli URL con e senza slash finale<\/h3>\n<p>Vuoi assicurarti che tutti gli URL senza trailing slash vengano reindirizzati alla versione con slash:<\/p>\n<p><strong>Source URL:<\/strong> <code>^\/(.+[^\/])$<\/code><br \/>\n<strong>Target URL:<\/strong> <code>\/$1\/<\/code><\/p>\n<p>Il pattern <code>[^\/]<\/code> corrisponde a qualsiasi carattere che <strong>non<\/strong> sia uno slash. Quindi, <code>^\/(.+[^\/])$<\/code> cattura gli URL che non terminano con slash e li reindirizza alla versione con slash finale.<\/p>\n<h3>Esempio 5: Redirect da parametri di query a URL puliti<\/h3>\n<p>Il vecchio sito usava URL con parametri come <code>\/?page_id=123<\/code> e vuoi reindirizzarli agli URL leggibili di WordPress:<\/p>\n<p><strong>Source URL:<\/strong> <code>^\/?page_id=42$<\/code><br \/>\n<strong>Target URL:<\/strong> <code>\/chi-siamo\/<\/code><\/p>\n<p>Nota il backslash prima del punto interrogativo (<code>?<\/code>): senza escape, il <code>?<\/code> verrebbe interpretato come operatore regex &#8220;opzionale&#8221;. Per i parametri di query, dovrai creare un redirect per ogni page_id specifico.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gtechgroup.it\/blog\/wp-content\/uploads\/2026\/05\/wc-status.png\" alt=\"Diagnostica tecnica per la verifica dei redirect regex\" class=\"wp-image aligncenter size-full\" \/><\/p>\n<h3>Esempio 6: Redirect case-insensitive<\/h3>\n<p>Se vuoi che il redirect funzioni indipendentemente da maiuscole e minuscole, aggiungi il flag <code>(?i)<\/code> all&#8217;inizio della regex:<\/p>\n<p><strong>Source URL:<\/strong> <code>(?i)^\/chi-siamo\/?$<\/code><br \/>\n<strong>Target URL:<\/strong> <code>\/chi-siamo\/<\/code><\/p>\n<p>Con questa regola, <code>\/Chi-Siamo\/<\/code>, <code>\/CHI-SIAMO\/<\/code> e <code>\/chi-SIAMO\/<\/code> verranno tutti reindirizzati a <code>\/chi-siamo\/<\/code>.<\/p>\n<h2>Pattern Avanzati e Tecniche Professionali<\/h2>\n<h3>Lookahead e Lookbehind<\/h3>\n<p>Le regex supportano i <em>lookahead<\/em> positivi e negativi, che permettono di definire condizioni senza catturare il testo. Ad esempio, per reindirizzare tutti gli URL che contengono &#8220;\/vecchio\/&#8221; ma <strong>non<\/strong> contengono &#8220;\/vecchio\/eccezione\/&#8221;:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gtechgroup.it\/blog\/wp-content\/uploads\/2026\/05\/rd-03-log.png\" alt=\"Screenshot del plugin nella dashboard WordPress\" \/><\/p>\n<p><strong>Source URL:<\/strong> <code>^\/vecchio\/(?!eccezione\/)(.+)$<\/code><br \/>\n<strong>Target URL:<\/strong> <code>\/nuovo\/$1<\/code><\/p>\n<p>Il <code>(?!eccezione\/)<\/code> &#232; un lookahead negativo: il redirect si attiva solo se il testo dopo <code>\/vecchio\/<\/code> <strong>non<\/strong> &#232; &#8220;eccezione\/&#8221;.<\/p>\n<p>Complementa la gestione dei redirect con le nostre guide su <a href=\"https:\/\/gtechgroup.it\/blog\/installare-configurare-broken-link-checker-wordpress\/\">Broken Link Checker<\/a>, <a href=\"https:\/\/gtechgroup.it\/blog\/installare-configurare-rank-math-wordpress\/\">Rank Math SEO<\/a> e <a href=\"https:\/\/gtechgroup.it\/blog\/woocommerce-seo-ottimizzare-prodotti-categorie\/\">SEO per WooCommerce<\/a>.<\/p>\n<h3>Gruppi non catturanti<\/h3>\n<p>Se hai bisogno di raggruppare dei caratteri senza catturarli (per non influenzare la numerazione dei riferimenti), usa <code>(?:...)<\/code>:<\/p>\n<p><strong>Source URL:<\/strong> <code>^\/(?:it|en|fr)\/(.+)$<\/code><br \/>\n<strong>Target URL:<\/strong> <code>\/$1<\/code><\/p>\n<p>Il gruppo <code>(?:it|en|fr)<\/code> non viene catturato, quindi <code>$1<\/code> si riferisce al secondo gruppo <code>(.+)<\/code>. Questa regola rimuove il prefisso di lingua dall&#8217;URL.<\/p>\n<h2>Debugging e Test delle Regex<\/h2>\n<p>Le espressioni regolari possono essere complesse da debuggare. Ecco alcuni suggerimenti per verificare che le tue regex funzionino correttamente:<\/p>\n<p><strong>Strumenti online:<\/strong> usa siti come <em>regex101.com<\/em> per testare le tue espressioni regolari prima di inserirle in Redirection. Questi strumenti mostrano in tempo reale cosa viene catturato e offrono spiegazioni dettagliate di ogni parte della regex.<\/p>\n<p><strong>Test incrementale:<\/strong> inizia con un pattern semplice e aggiungilo progressivamente. Se la regex completa non funziona, semplificala fino a trovare il punto di errore.<\/p>\n<p><strong>Log di Redirection:<\/strong> dopo aver creato un redirect regex, verifica nei log che venga attivato correttamente. Se il redirect non appare nei log quando visiti l&#8217;URL di test, la regex potrebbe non corrispondere.<\/p>\n<p><strong>Attenzione ai falsi positivi:<\/strong> una regex troppo generica potrebbe catturare URL che non dovrebbe. Usa ancoraggi (<code>^<\/code> e <code>$<\/code>) per limitare la corrispondenza e testa con URL che <strong>non<\/strong> dovrebbero essere catturati.<\/p>\n<h2>Errori Comuni con le Regex in Redirection<\/h2>\n<p><strong>Dimenticare l&#8217;escape dei caratteri speciali:<\/strong> il punto (<code>.<\/code>), il punto interrogativo (<code>?<\/code>), le parentesi e altri caratteri speciali devono essere preceduti da backslash quando vuoi che siano interpretati letteralmente.<\/p>\n<p><strong>Regex troppo generiche:<\/strong> una regex come <code>.*<\/code> nel Source URL cattura <strong>tutti<\/strong> gli URL del sito, inclusa la homepage. Questo pu&#242; causare redirect loop e rendere il sito inaccessibile. Usa sempre ancoraggi e pattern specifici.<\/p>\n<p><strong>Ordine delle regole:<\/strong> Redirection valuta le regole nell&#8217;ordine in cui sono elencate. Se hai una regex generica prima di una specifica, la generica verr&#224; attivata per prima. Posiziona le regole pi&#249; specifiche in cima alla lista.<\/p>\n<p><strong>Riferimenti non esistenti:<\/strong> se usi <code>$3<\/code> nell&#8217;URL di destinazione ma la regex ha solo due gruppi di cattura, il risultato sar&#224; un URL malformato. Verifica sempre che il numero di riferimenti corrisponda ai gruppi di cattura.<\/p>\n<h2>Prestazioni delle Regex<\/h2>\n<p>Le regex sono pi&#249; costose in termini di risorse rispetto ai redirect con URL esatto. Ogni richiesta al sito deve essere confrontata con tutte le regex attive, il che richiede pi&#249; tempo di elaborazione. Su siti con centinaia di regex, questo pu&#242; avere un impatto misurabile sulle prestazioni.<\/p>\n<p>Per minimizzare l&#8217;impatto, segui queste best practice: usa regex solo quando necessario (per pattern ripetitivi); per singoli URL, usa redirect con corrispondenza esatta; organizza i redirect in gruppi e disattiva i gruppi non necessari; evita regex eccessivamente complesse con molti backtrack.<\/p>\n<h2>Conclusioni<\/h2>\n<p>Le espressioni regolari in Redirection sono uno strumento incredibilmente potente per gestire redirect complessi su WordPress. Con la pratica, sarai in grado di creare regole che gestiscono automaticamente centinaia di URL con una singola riga. Ricorda per&#242; di testare sempre le tue regex prima di attivarle in produzione e di monitorare i log per verificare che funzionino come previsto.<\/p>\n<p>Se hai bisogno di aiuto con redirect regex complessi o con la gestione avanzata dei redirect, <a href=\"https:\/\/gtechgroup.it\/contatti\/\">contattaci<\/a> per una consulenza professionale. Il nostro servizio di <a href=\"https:\/\/gtechgroup.it\/posizionamento-seo\/\">posizionamento SEO<\/a> include la configurazione ottimale dei redirect per massimizzare le prestazioni e il valore SEO del tuo sito.<\/p>\n<div style=\"background:#f0f4f8;border-left:4px solid #0073aa;padding:20px 24px;margin:30px 0;border-radius:4px;\">\n<h3 style=\"margin-top:0;\">Migliora il Tuo Sito WordPress<\/h3>\n<p>Questa guida fa parte della nostra serie completa su WordPress. Scopri anche le nostre guide su:<\/p>\n<ul>\n<li><strong>Elementor<\/strong> &ndash; Il page builder pi&#249; potente per WordPress<\/li>\n<li><strong>WP Rocket<\/strong> &ndash; Velocizzare WordPress con il miglior plugin di caching<\/li>\n<li><strong>SEOPress<\/strong> &ndash; Ottimizzare la SEO del tuo sito WordPress<\/li>\n<li><strong>UpdraftPlus<\/strong> &ndash; Backup automatici e ripristino del sito<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Le Espressioni Regolari: Il Superpotere dei Redirect Le espressioni regolari (regex) sono uno degli strumenti pi&#249; potenti a disposizione di un webmaster, e il plugin&hellip;<\/p>\n","protected":false},"author":0,"featured_media":166919,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Regex e Redirect Avanzati con Redirection | Guida","_seopress_titles_desc":"Come usare le espressioni regolari (regex) in Redirection per redirect avanzati. Pattern matching, gruppi, wildcard e esempi pratici.","_seopress_robots_index":"","footnotes":""},"categories":[1],"tags":[3382,3383,3373,3381,492],"class_list":["post-166974","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-senza-categoria","tag-pattern-matching","tag-redirect-avanzati","tag-redirection","tag-regex","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/posts\/166974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/comments?post=166974"}],"version-history":[{"count":0,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/posts\/166974\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/media\/166919"}],"wp:attachment":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/media?parent=166974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/categories?post=166974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/tags?post=166974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}