ルール設定
このページでは、Redirect Webアプリの「ルール編集」画面にある各設定の詳細情報を提供します。
オプション
タイプ
タイプオプションは、アプリがリダイレクトをどのように処理するかを制御するために指定します。以下から選択できます。
- オリジナル (デフォルト)
- これは、従来からのWeb APIを使用してリダイレクトを制御します。さらに、フォールバックとしてTabs APIを使用します。
- Firefoxでは、WebRequest APIを使用してリダイレクトを処理します。
- リソースタイプとリクエストメソッド以外のすべてのオプションを使用できます。
- これは「宣言型」タイプよりも遅く、余分なネットワークリクエストを引き起こす可能性があります。
- これは、従来からのWeb APIを使用してリダイレクトを制御します。さらに、フォールバックとしてTabs APIを使用します。
- DNR (Safari向け実験的機能):
リダイレクト元
リダイレクト元オプションでは、リダイレクトしたいウェブページのURLパターンを指定できます。ワイルドカードまたは正規表現のいずれかを選択できます。
例えば、ワイルドカードでhttps://example.com/*を指定すると、https://example.com/またはhttps://example.com/helloに一致します。
リダイレクト先オプションでは、$0を使用して全体の一致を、$1、$2、...を使用して部分的な一致を参照できます。詳細はこのページのURLパターンで確認してください。
リソースタイプ
リソースタイプオプションを使用すると、ルールが適用されるウェブ要求のカテゴリ(画像、JavaScript、スタイルシートなど)を指定できます。
例えば、scriptを設定すると、ウェブページによって読み込まれる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タイプの実装が現在これを処理していないように見えるため、このオプションは利用できない場合があります。AppleにはFB14502272としてフィードバックを送信しました。
ターゲットブラウザ
ターゲットブラウザオプションを使用すると、ルールを適用する、または適用しないブラウザを指定できます。
- 選択できるブラウザは2種類あります。
- デフォルトで選択できるブラウザ: Safari、Chrome、Firefox、Edge、Opera、Arc、Brave、Vivaldiをデフォルトで選択できます。これは、SafariとSafari Technology Previewのような同じブラウザのバリアントを区別しません。
- ユーザー指定のブラウザ: ポップオーバーの追加ボタンをタップすることで、Redirect Web拡張機能がインストールされているSafariまたはSafari Technology Preview以外の任意のブラウザを選択できます。
- 選択したものを除くすべてチェックボックスは、選択したブラウザを除くすべてのブラウザをターゲットにします。
Redirect Webは、ブラウザが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を指定できます。これは、リダイレクトループを回避したり、ウェブサイトの特定の部分がリダイレクトされないようにしたりするのに役立ちます。
除外URLパターンは、正規表現またはワイルドカードパターンタイプを使用して指定できます。
例
例オプションを使用すると、サンプル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」になります。$0は一致したURL全体を参照するためにも利用できます。
置換は正規表現の機能ですが、Redirect Webは内部的にワイルドカードを正規表現に変換するため、ワイルドカードでも使用できます。
正規表現
正規表現(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を使用して全体の一致を参照したりできます。
Redirect WebはAppleの正規表現エンジンを搭載しています。
正規表現の構文に関する詳細情報は、RegExrなどのリソースで確認できます。