规则设置
本页面详细介绍了 Redirect Web 应用中“编辑规则”屏幕上的每个设置。
选项
类型
通过指定“类型”选项,您可以控制应用如何处理重定向。您可以从以下选项中选择:
- Original(默认)
- 这使用传统的 Web API 来控制重定向。此外,它还使用 Tabs API 作为备用方案。
- 在 Firefox 中,它使用 WebRequest API 来处理重定向。
- 您可以使用除 资源类型 和 请求方法 之外的所有选项。
- 这比 Declarative 类型慢,并且可能导致额外的网络请求。
- 这使用传统的 Web API 来控制重定向。此外,它还使用 Tabs API 作为备用方案。
- DNR(Safari 实验性功能):
重定向源
“重定向源”选项允许您指定要从中重定向的网页的 URL 模式。您可以选择 通配符 或 正则表达式。
例如,如果您使用通配符指定 https://example.com/*
,它将匹配 https://example.com/
或 https://example.com/hello
。
在“重定向目标”选项中,您可以使用 $0
引用整个匹配项,或使用 $1
、$2
等引用部分匹配项。请参阅本页面的 URL 模式 以了解详细信息。
资源类型
“资源类型”选项允许您指定规则适用的 Web 请求类别,例如图片、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。
目标浏览器
“目标浏览器”选项允许您指定规则应该或不应该应用于哪些浏览器。
- 有两种类型的浏览器可供选择:
- 默认可选浏览器:您可以默认选择 Safari、Chrome、Firefox、Edge、Opera、Arc、Brave 和 Vivaldi。这不区分同一浏览器的不同变体,例如 Safari 和 Safari Technology Preview。
- 用户指定的浏览器:通过点击弹出窗口上的“添加”按钮,您可以选择除了 Safari 或 Safari Technology Preview 之外,任何已安装 Redirect Web 扩展程序的浏览器。
- “除了选定的所有浏览器”复选框允许您选择除已选浏览器之外的所有浏览器。
Redirect Web 无法区分浏览器是 Safari 还是 Safari Technology Preview,因为该应用通过检查扩展程序的父进程来检测浏览器,但这两个浏览器共享相同的父进程 (/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
...替换的捕获组。
捕获组的创建方式如下:
- 通配符:与
*
和?
匹配的文本会自动被捕获。 - 正则表达式:与
()
内模式部分匹配的文本会被捕获。
您可以选择以下一个或多个处理方式:
- URL 编码/解码:这会将 百分比编码 或解码应用于捕获组。例如,如果您编码
https://example.com/hello
,它会转换为https%3A%2F%2Fexample.com%2Fhello
。解码则以相反的方式工作。 - Base64 编码/解码:这会将文本编码/解码为 Base64。例如,您可以将
hello
编码为aGVsbG8=
,并将其解码回hello
。 - 替换匹配项:这会将组中由“目标”匹配的一个或多个字符替换为“替换项”。例如,如果“组”是
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,您可以在实际应用规则之前检查其是否按预期工作。
备注
“备注”选项允许您添加关于重定向规则的任何注释或说明。这对于记录您创建特定规则的原因,或为可能查看您规则的其他人提供上下文非常有用。
URL 模式
有 3 个选项可以指定一个或多个 URL 模式:重定向源、排除的 URL 模式和捕获组处理。要指定它们,您可以选择通配符或正则表达式。
通配符
通配符是一种更简单的模式类型,允许您使用 *
(匹配任何内容)和 ?
(匹配任何单个字符)作为通配符。以下是一些示例:
- 要匹配
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。
[!Note] 尽管替换是正则表达式的一项功能,但您也可以将其用于通配符,因为 Redirect Web 会在内部将通配符转换为正则表达式。
正则表达式
正则表达式 (Regex) 是一种强大的文本模式匹配工具,由 Apple 的正则表达式引擎提供支持,其描述可见此处。它允许您定义一个匹配一组字符串的特定模式。以下是一些示例:
- 要匹配
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
... 或 $0
来引用“重定向目标”或“替换项”中的捕获组,其中 $0
引用整个匹配项。
有关正则表达式语法的更多信息可以在 RegExr 等资源中找到。