Per iniziare
Questa pagina descrive i casi d'uso comuni per la creazione di regole nell'app Redirect Web.
(Puoi anche apprendere i dettagli delle impostazioni delle regole nella pagina Impostazioni delle regole.)
Caso 1: Aprire un altro sito web
Supponiamo che tu sia dipendente da Twitter e decida di meditare in Insight Timer ogni volta che apri accidentalmente Twitter. Creiamo una regola per questo!
Passaggio 1. Configura "Reindirizza da"
Innanzitutto, devi configurare la sezione Reindirizza da nella schermata Modifica regola nell'app. Gli obiettivi sono URL che iniziano con https://twitter.com/
.
In questo caso, puoi specificare il seguente pattern con la modalità Carattere jolly:
https://twitter.com/*
Nella modalità Carattere jolly, *
significa che corrisponde a qualsiasi cosa (= zero o più caratteri).
Tuttavia, aspetta. twitter.com
è stato rinominato in x.com
. Puoi semplicemente sostituire twitter.com
con x.com
, ma nessuno sa quando il nuovo proprietario cambierà di nuovo idea per ripristinarlo. Pertanto, miriamo sia a twitter.com
che a x.com
.
Per fare ciò, passa da Carattere jolly a Espressione regolare e imposta questo come pattern:
https://(twitter|x).com/.*
(twitter|x)
: mira sia atwitter
che ax
. (|
è chiamato una pipe.).*
: È lo stesso di*
del carattere jolly. Più specificamente,.
significa qualsiasi carattere e*
significa qualsiasi cosa prima di questo simbolo ripetuta un numero qualsiasi di volte, risultando in una corrispondenza con qualsiasi cosa.
L'espressione regolare è un po' complicata, ma una volta che ci si abitua, sarà uno strumento potente. Ti consigliamo di utilizzare RegExr come playground per analizzare come funziona il tuo pattern di espressione regolare.
Nelle espressioni regolari, .
in (twitter|x).com
è anche trattato come qualsiasi carattere. Pertanto, (twitter|x).com/.*
corrisponde anche, ad esempio, a twitter1com/
o x_com/
.
Per evitarlo, puoi cambiarlo in (twitter|x)\.com/.*
. \
viene utilizzato per eseguire l'escape di un carattere speciale.
Tuttavia, non esistono tali URL nell'ambiente Internet generale. Pertanto, puoi lasciare .
come carattere speciale se preferisci. La tua regola è per il tuo uso personale, quindi implementala come ritieni opportuno.
Passaggio 2: Configura "Reindirizza a"
Specifica semplicemente l'URL come segue:
https://insighttimer.com/saraauster/guided-meditations/calm
Ora, Redirect Web ti porta alla meditazione quando accedi a Twitter!
Caso 2: Rimuovere i parametri di query dall'URL
Supponiamo che ci sia un parametro di query source=twitter
in un URL di example.com
, e tu abbia deciso di rimuoverlo per anonimizzarti.
In questo caso, l'opzione Elaborazione gruppo di acquisizione è il modo più semplice.:
- Reindirizza da:
https://example.com/*
(Carattere jolly) - Reindirizza a:
$0
- Elaborazione gruppo di acquisizione:
- Gruppo:
$0
- Processo: Sostituisci occorrenze
- Target:
&?source=[^&]*
- Sostituzione: (nessuno)
- Pattern di testo: Espressione regolare
- Target:
- Gruppo:
Questa regola funziona come segue:
https://example.com/?source=twitter
↪ https://example.com/?
https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar
Se desideri rimuovere più parametri, aggiungi più processi.
Caso 3: Aggiungere parametri di query all'URL
Let's say there is a website called example.com
that shows a mobile layout by default, but you prefer their desktop layout. Fortunately, the website supports a layout
query parameter to specify which layout the website displays. Let's create a rule that adds layout=desktop
automatically.
Perhaps you think you could define it as follows:
- Reindirizza da:
https://example.com/.*
(Espressione regolare) - Reindirizza a:
$0?layout=desktop
$0
fa riferimento all'URL di destinazione. Se provi ad accedere a example.com/hello
, verrai reindirizzato a example.com/hello?layout=desktop
. Questa funzionalità si chiama sostituzione.
La sostituzione è disponibile anche per la modalità Carattere jolly poiché viene convertita internamente in espressione regolare.
Tuttavia, ci sono alcuni problemi con queste impostazioni.
Problema 1: Loop infinito
L'impostazione attuale crea un loop di reindirizzamento infinito poiché https://example.com/.*
mira anche a https://example.com/hello?layout=desktop
.
In questo caso, puoi specificare un pattern URL escluso che ti consente di accedere senza reindirizzamento, come questo con l'espressione regolare:
.*[&?]layout=[^&]*.*
.*
: Corrisponde a qualsiasi cosa[&?]
: Corrisponde a&
o?
[^&]*
: Corrisponde a qualsiasi cosa tranne&
Problema 2: Impossibile gestire correttamente i parametri esistenti
Se l'URL di destinazione ha già altri parametri di query come example.com/hello?theme=dark
, la destinazione sarà example.com/hello?theme=dark?layout=desktop
(ci sono due ?
nell'URL) ma puoi unire i parametri solo con &
. ?
come carattere speciale è consentito solo all'inizio dei parametri. Quindi non è trattato come un parametro valido.
In questo caso, modifica le impostazioni in questo modo:
- Reindirizza da:
(https://example.com/[^?]*)(\(.*))?
- Reindirizza a:
$1?layout=desktop&$3
Diamo un'occhiata passo dopo passo.
(https://example.com/[^?]*)
: Corrisponde alla parte fino al carattere precedente di?
.[^?]*
corrisponde a qualsiasi cosa tranne?
.- Questo è racchiuso tra
()
in modo da poterlo fare riferimento con$1
in seguito.
(\(.*))?
: Corrisponde a una stringa che inizia con?
, il che significa parametri di query.- Questo corrisponde anche a una stringa vuota tramite il quantificatore
?
alla fine del pattern, che corrisponde zero o una volta. - Le
()
esterne e le()
interne possono essere referenziate con$2
e$3
in seguito.
- Questo corrisponde anche a una stringa vuota tramite il quantificatore
RegExr potrebbe aiutarti a capire i dettagli.
RegExr mostra un errore quando non si esegue l'escape di /
con \
. Sebbene sia possibile eseguirne l'escape, non è richiesto poiché Redirect Web utilizza un motore diverso di Apple che non richiede l'escape.
Questa non è una soluzione perfetta, poiché reindirizza example.com/hello
a example.com/hello?layout=desktop&
, che include un &
non necessario alla fine dell'URL. Non è un grosso problema in generale, ma se desideri rimuoverlo, puoi utilizzare l'Elaborazione gruppo di acquisizione.
In conclusione, questo è l'output finale:
- Reindirizza da:
(https://example.com/[^?]*)((\(.*))?)
(Espressione regolare) - Reindirizza a:
$1?layout=desktop$3
- Pattern URL escluso:
.*[&?]layout=[^&]*.*
(Espressione regolare) - Elaborazione gruppo di acquisizione:
- Gruppo:
$3
- Processo: Sostituisci occorrenze
- Target:
\?(.*)
- Sostituzione:
&$1
- Target:
- Gruppo:
Questo è solo un esempio. Puoi anche creare più regole per gestire ogni problema. Può essere molto più semplice.