はじめに
このページでは、Redirect Webアプリでルールを作成するための一般的な使用例について説明します。
(ルールの設定の詳細は、ルール設定ページでも確認できます。)
ケース1:別のウェブサイトを開く
Twitterに夢中になっていて、誤ってTwitterを開いてしまったときにInsight Timerで瞑想することにしたとします。そのためのルールを作成しましょう!
ステップ1:「リダイレクト元」を設定する
まず、アプリの「ルール編集」画面で「リダイレクト元」セクションを設定する必要があります。ターゲットはhttps://twitter.com/
で始まるURLです。
この場合、ワイルドカードモードで次のパターンを指定できます。
https://twitter.com/*
ワイルドカードモードでは、*
は「何でも一致する」(0文字以上)ことを意味します。
しかし、待ってください。twitter.com
はx.com
に名前が変更されました。twitter.com
をx.com
に置き換えることもできますが、新しい所有者がいつ考えを変えて元に戻すかは誰にもわかりません。したがって、twitter.com
とx.com
の両方をターゲットにしましょう。
そのためには、ワイルドカードから正規表現に切り替えて、これをパターンとして設定します。
https://(twitter|x).com/.*
(twitter|x)
:twitter
とx
の両方をターゲットにします。(|
は「パイプ」と呼ばれます。).*
: ワイルドカードの*
と同じです。より具体的には、.
は「任意の文字」を意味し、*
は「この記号の前のものが任意の回数繰り返される」ことを意味し、結果として何でも一致します。
正規表現は少し複雑ですが、慣れてしまえば強力なツールになります。正規表現パターンがどのように機能するかを分析するための遊び場として、RegExrを使用することをお勧めします。
正規表現では、(twitter|x).com
の.
も「任意の文字」として扱われます。したがって、twitter1com/
やx_com/
なども一致します。
これを避けるには、(twitter|x)\.com/.*
に変更できます。\
は特殊文字をエスケープするために使用されます。
ただし、一般的なインターネット環境ではそのようなURLはありません。したがって、.
を特殊文字のままにしておくこともできます。あなたのルールはあなた自身の使用のためなので、適切と思われるように実装してください。
ステップ2:「リダイレクト先」を設定する
次のようにURLを指定するだけです。
https://insighttimer.com/saraauster/guided-meditations/calm
これで、Twitterにアクセスすると、Redirect Webが瞑想に誘導してくれます!
ケース2:URLからクエリパラメータを削除する
example.com
のURLにsource=twitter
というクエリパラメータがあり、匿名化するためにそれを削除することにしたとします。
この場合、「キャプチャグループ処理」オプションが最も簡単な方法です。
- リダイレクト元:
https://example.com/*
(ワイルドカード) - リダイレクト先:
$0
- キャプチャグループ処理:
- グループ:
$0
- プロセス: 出現箇所を置換
- ターゲット:
&?source=[^&]*
- 置換: (なし)
- テキストパターン: 正規表現
- ターゲット:
- グループ:
このルールは次のように機能します。
https://example.com/?source=twitter
↪ https://example.com/?
https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar
さらにパラメータを削除したい場合は、プロセスを追加します。
ケース3:URLにクエリパラメータを追加する
example.com
というウェブサイトがあり、デフォルトでモバイルレイアウトが表示されますが、デスクトップレイアウトを好むとします。幸いなことに、このウェブサイトはどのレイアウトを表示するかを指定するためのlayout
クエリパラメータをサポートしています。layout=desktop
を自動的に追加するルールを作成しましょう。
次のように定義できると考えるかもしれません。
- リダイレクト元:
https://example.com/.*
(正規表現) - リダイレクト先:
$0?layout=desktop
$0
はターゲットURLを参照します。example.com/hello
にアクセスしようとすると、example.com/hello?layout=desktop
にリダイレクトされます。この機能は「置換」と呼ばれます。
ワイルドカードモードでも、内部的に正規表現に変換されるため、置換が可能です。
ただし、これらの設定にはいくつかの問題があります。
問題1:無限ループ
現在の設定では、https://example.com/.*
もhttps://example.com/hello?layout=desktop
をターゲットにするため、無限リダイレクトループが発生します。
この場合、正規表現で次のようにリダイレクトなしでアクセスできる除外URLパターンを指定できます。
.*[&?]layout=[^&]*.*
.*
: 何でも一致[&?]
:&
または?
のいずれかに一致[^&]*
:&
以外の何でも一致
問題2:既存のパラメータを適切に処理できない
ターゲットURLにすでにexample.com/hello?theme=dark
のような他のクエリパラメータがある場合、宛先はexample.com/hello?theme=dark?layout=desktop
になります(URLに?
が2つあります)が、パラメータは&
でのみ結合できます。特殊文字としての?
は、パラメータの先頭でのみ許可されます。したがって、有効なパラメータとして扱われません。
この場合、設定を次のように変更します。
- リダイレクト元:
(https://example.com/[^?]*)(\(.*))?
- リダイレクト先:
$1?layout=desktop&$3
順を追って見ていきましょう。
(https://example.com/[^?]*)
:?
の前の文字までの部分に一致します。[^?]*
は?
以外の何でも一致します。- これは
()
で囲まれているため、後で$1
で参照できます。
(\(.*))?
:?
で始まる文字列に一致します。これはクエリパラメータを意味します。- これは、パターンの末尾にある
?
量指定子(0回または1回一致)によって空の文字列にも一致します。 - 外側の
()
と内側の()
は、後で$2
と$3
で参照できます。
- これは、パターンの末尾にある
RegExrが詳細を理解するのに役立つかもしれません。
RegExrでは、/
を\
でエスケープしないとエラーが表示されます。エスケープすることもできますが、Redirect Webはエスケープを必要としないAppleの異なるエンジンを使用しているため、必須ではありません。
これは完璧な解決策ではありません。example.com/hello
をexample.com/hello?layout=desktop&
にリダイレクトするため、URLの最後に不要な&
が含まれます。これは一般的には大きな問題ではありませんが、削除したい場合は「キャプチャグループ処理」を使用できます。
結論として、最終的な出力は次のとおりです。
- リダイレクト元:
(https://example.com/[^?]*)((\(.*))?)
(正規表現) - リダイレクト先:
$1?layout=desktop$3
- 除外URLパターン:
.*[&?]layout=[^&]*.*
(正規表現) - キャプチャグループ処理:
- グループ:
$3
- プロセス: 出現箇所を置換
- ターゲット:
\?(.*)
- 置換:
&$1
- ターゲット:
- グループ:
これは単なる例です。各問題を処理するために複数のルールを作成することもできます。それははるかに単純になる可能性があります。