ルール設定
このページでは、RedirectWebアプリの「ルールの編集」画面における各設定の詳細について説明します。
オプション
タイプ
タイプオプションを指定して、アプリがリダイレクトを処理する方法を制御します。以下から選択できます:
- オリジナル(デフォルト)
- これは従来のリダイレクト制御用Web APIを使用します。さらに、フォールバックとしてTabs APIを使用します。
- Firefoxでは、リダイレクトの処理にWebRequest APIを使用します。
- リソースタイプとリクエストメソッド以外のすべてのオプションを使用できます。
- ⚠️ これは「宣言的(DNR)」タイプよりも遅く、余分なネットワークリクエストが発生する可能性があります。
- これは従来のリダイレクト制御用Web APIを使用します。さらに、フォールバックとしてTabs APIを使用します。
- DNR(Safariでは実験的):
リダイレクト元
リダイレクト元オプションでは、リダイレクトしたいWebページのURLパターンを指定できます。ワイルドカードまたは正規表現のいずれかを選択できます。
例えば、ワイルドカードで https://example.com/* と指定した場合、https://example.com/ や https://example.com/hello にマッチします。
「リダイレクト先」オプションでは、$0 を使用してマッチ全体を、$1, $2, ... を使用して部分一致を参照できます。詳細は、このページのURLパターンを確認してください。
リソースタイプ
リソースタイプオプションでは、画像、JavaScript、スタイルシートなど、ルールを適用するWebリクエストのカテゴリを指定できます。
例えば、script を設定すると、Webページによって読み込まれるJavaScriptファイルをリダイレクトできます。
現在、以下が利用可能です:
main_frame, sub_frame, stylesheet, script, image, font, xmlhttprequest, ping, media, websocket, other
デフォルト設定は main_frame で、これはタブに読み込まれるトップレベルのページです。
各リソースタイプの詳細は、mdn web docsを確認してください。
リクエストメソッド
リクエストメソッドオプションでは、ソースURLの対象となるHTTPメソッドを設定できます。
デフォルトではすべてのメソッドが設定されています。
各メソッドの詳細は、mdn web docsを確認してください。
Safariでは、AppleによるDNRタイプの実装が現在これを処理していないように見えるため、このオプションを利用できない場合があります。弊社はFB14502272としてAppleにフィードバックを送信しました。
対象ブラウザ
対象ブラウザオプションでは、ルールを適用する(または適用しない)ブラウザを指定できます。
- 選択できるブラウザには2つのタイプがあります:
- デフォルトで選択可能なブラウザ: Safari、Chrome、Firefox、Edge、Opera、Arc、Brave、Vivaldiをデフォルトで選択できます。これは、SafariとSafari Technology Previewのような、同じブラウザのバリエーションを区別しません。
- ユーザー指定のブラウザ: ポップオーバーの追加ボタンをタップすることで、RedirectWeb拡張機能がインストールされているSafariまたはSafari Technology Preview以外の任意のブラウザを選択できます。
- 「選択したもの以外すべて」チェックボックスを使用すると、選択したブラウザ以外のすべてのブラウザを対象にできます。
RedirectWebは、ブラウザが Safari か Safari Technology Preview かを判別できません。これは、アプリが拡張機能の親プロセスをチェックして検出を行いますが、これら2つのブラウザは同じ親プロセス(/sbin/launchd)を共有しているためです。
リダイレクト先
リダイレクト先オプションは、「リダイレクト元」オプションでマッチしたソースURLからの転送先URLを指定します。$1, $2, ... を使用してキャプチャグループを、または $0 を使用してマッチ全体を置換することもできます。これらにより、転送先を動的に指定できます。詳細は、このページのURLパターンを確認してください。
例えば、以下のルールを設定した場合:
- リダイレクト元:
https://google.com/*(ワイルドカード) - リダイレクト先:
https://apple.com/$1
これに https://google.com/hello がマッチすると、転送先URLは https://apple.com/hello になります。
さらに、置換を行う前に $1, $2, ... のテキストを加工することもできます。詳細はキャプチャグループの処理セクションを確認してください。
カスタムURLスキームを指定してアプリを開くことができます。以下はディープリンクをサポートしているアプリの例です:
- Figma:
figma://file/Your_Figma_ID - Firefox:
firefox://open-url?url=https://example.com/hello - Google Chrome:
googlechromes://example.com - Microsoft Edge:
microsoft-edge://example.com - Notion:
notion://www.notion.so/Your_Note_ID - Slack:
slack://open
アプリケーション
転送先URLを開くアプリを指定したい場合は、アプリケーションコンボボックスを使用します。これはmacOSでのみ利用可能です。
App Sandboxをサポートしているアプリのみを開くことができます。また、そのアプリが、開こうとしているURLをサポートしていることを確認してください。
キャプチャグループの処理
キャプチャグループの処理オプションでは、「リダイレクト先」オプションで $1, $2... として置換できる、キャプチャされたグループをどのように処理するかを指定できます。
キャプチャグループの作成方法は以下の通りです:
- ワイルドカード:
*や?にマッチしたテキストが自動的にキャプチャされます。 - 正規表現:
()内のパターンの一部にマッチしたテキストがキャプチャされます。
以下の処理から1つ以上を選択できます:
- URLエンコード/デコード: キャプチャグループに対してパーセントエンコーディングまたはデコードを適用します。例えば、
https://example.com/helloをエンコードすると、https%3A%2F%2Fexample.com%2Fhelloに変換されます。デコードはその逆の動作をします。 - Base64エンコード/デコード: テキストをBase64にデコード/エンコードします。例えば、
helloをaGVsbG8=にエンコードし、再びhelloにデコードできます。 - 出現箇所の置換: グループ内の一致する1つ以上の文字を、対象から置換後の文字に置き換えます。例えば、グループが
helloで、対象がl、置換後がyの場合、heyyoに変更されます。
これは各キャプチャグループを処理するためのものであり、除外URLパターンによってどのURLが除外されるかには影響しません。例えば、次のようなルールがあるとします:
- リダイレクト元:
https://example.com/(hello.*) - キャプチャグループの処理:
- グループ:
$1 - 対象:
.*(正規表現) - 置換後:
hello
- グループ:
- 除外URLパターン:
https://example.com/hello
この場合、https://example.com/hello_world は除外されませんが、https://example.com/hello は除外されます。
除外URLパターン
除外URLパターンオプションを使用すると、リダイレクトされないURLを指定できます。これは、リダイレクトループを回避したり、Webサイトの特定の部分をリダイレクトから除外したりするのに役立ちます。
正規表現またはワイルドカードのいずれかのパターンタイプを使用して、除外URLパターンを指定できます。
例
例オプションでは、サンプルURLを提供してリダイレクトルールをテストできます。サンプルURLを追加することで、実際に適用する前にルールが期待通りに動作するかどうかを確認できます。
高度な設定
- [DNR] メインフレームのリダイレクト: このオプションはDNRタイプでのみ利用可能です。
main_frameリソースタイプのリダイレクトをどのように処理するかを指定できます。利用可能なオプションは以下の通りです:- 生(Raw): メインフレームを変更を加えずに指定されたURLにリダイレクトします。
- 中間ページ経由: メインフレームを一度中間ページにリダイレクトし、そこから指定された転送先URLにリダイレクトします。中間ページでより複雑なリダイレクトロジックを処理できるため、ディープリンクを使用したアプリの起動に役立ちます。
コメント
コメントオプションを使用すると、リダイレクトルールに関するメモやコメントを追加できます。これは、特定のルールを作成した理由を記録したり、ルールを見る他の人にコンテキストを提供したりするのに役立ちます。
コメントは以下の形式で記述できます:
- プレーンテキスト(デフォルト): 書式のない単純なテキスト。
- Markdown: GitHubのMarkdown構文(GFMがサポートしていない一部の拡張機能を含む)を使用できます。例えば、見出し、リスト、リンクなどを作成できます。
- AsciiDoc: AsciiDoc構文を使用してコメントを整形できます。
URLパターン
URLパターンは、「リダイレクト元」、「除外URLパターン」、「キャプチャグループの処理」オプションでURLをマッチングするために使用されます。これらを指定するには、ワイルドカードまたは正規表現のいずれかを選択できます。
ワイルドカード
ワイルドカードは、*(任意にマッチ)と ?(任意の1文字にマッチ)をワイルドカードとして使用できる、より単純なパターンタイプです。以下にいくつかの例を示します:
https://example.com/helloにマッチさせるには、https://example.com/*を使用します。これにより、https://example.com/の後の任意の文字列にマッチします。https://example.com/search?q=helloにマッチさせるには、https://example.com/search?q=*を使用します。これにより、qパラメータの任意の値をマッチさせます。blogという単語を含む任意のURLにマッチさせるには、*blog*を使用します。
ワイルドカードでも置換を使用できます。つまり、$1, $2 などを使用して、マッチしたURLの一部を参照できます。例えば、https://example.com/*-world-* を使用し、URLが https://example.com/hello-world-goodbye の場合、$1 は "hello"、$2 は "goodbye" になります。マッチしたURL全体を参照するために $0 も利用可能です。
置換は正規表現の機能ですが、RedirectWebは内部でワイルドカードを正規表現に変換するため、ワイルドカードでも置換を使用できます。
正規表現
正規表現(Regex)は、テキストのパターンをマッチングするための強力なツールであり、プログラミングでも広く使用されています。一連の文字列にマッチする特定のパターンを定義できます。以下にいくつかの例を示します。
https://example.com/helloにマッチさせるには、https://example.com/.*を使用します。これにより、https://example.com/の後の任意の文字列にマッチします。https://example.com/search?q=helloにマッチさせるには、https://example.com/search\?q=(.*)を使用します。これにより、qパラメータの値がマッチし、キャプチャグループに保存されます。その後、「リダイレクト先」オプションで$1を使用して参照できます。blogという単語を含む任意のURLにマッチさせるには、.*blog.*を使用します。
キャプチャグループは、「リダイレクト先」または「置換」で $1, $2, ... を使用して参照できます。マッチ全体を参照するには $0 を使用します。
RedirectWebは、Appleの正規表現エンジンを採用しています。
正規表現の構文に関する詳細は、RegExrなどのリソースで確認できます。