# 路线
是否应该在基于URL的请求上运行if和what脚本的机制。
## Workers.Dev
对于worker.dev区域,脚本由脚本名称管理。对您的`script-name.subdomain.workers.dev`子域的请求将通过活动脚本运行,并带有相应的名称`script-name`。
路由的所有逻辑必须在脚本本身中完成。例如,您可以使用[路由器模板](https://developers.cloudflare.com/workers/templates/boilerplates/router)。
每个运行的脚本都必须具有一个脚本名称,因此当前无法在上运行脚本`subdomain.workers.dev`。
## 自定义区域
对于在Cloudflare\*上代理的区域,路由模式根据该请求的URL决定要匹配的脚本(如果有)。当URL与分配给该脚本的路由模式匹配时,请求将通过Workers脚本进行路由。
可以使用Cloudflare API或在选择区域后转到“[工作人员”选项卡](https://dash.cloudflare.com/?zone=workers)来添加路由模式。

Cloudflare网站路线包括:
* 路由网址(请参阅[匹配行为](https://developers.cloudflare.com/workers/about/routes/#matching-behavior))
* 要在匹配请求上执行的工作脚本
* 免费计划中[限价](https://developers.cloudflare.com/workers/about/limits#request-limits)帐户的失败模式(请参阅[每日请求限制](https://developers.cloudflare.com/workers/about/limits#request-limits))
\**您已经向某些注册商(不是worker.dev)注册的区域,并将Cloudflare设置为**[反向代理](https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/)**。*
### 匹配行为
路由模式如下所示:
~~~
https://*.example.com/images/*
~~~
此模式将匹配所有发往example.com子主机且路径前缀为的HTTPS请求`/images/`。
匹配所有请求的模式如下所示:
~~~
*example.com/*
~~~
虽然它们看起来类似于[正则表达式](https://en.wikipedia.org/wiki/Regular_expression)模式,但路由模式遵循特定规则:
* 唯一支持的运算符是通配符`*`,它匹配零个或多个任何字符。
* 路由模式可能不包含中缀通配符或查询参数,例如,`example.com/*.jpg`也不`example.com/?foo=*`是有效的路由模式。
* 如果一个以上的路由模式可以与请求URL匹配,则以最具体的路由模式为准。例如,在匹配的请求时,模式`www.example.com/*`将优先`*.example.com/*`于`https://www.example.com/`。
* 路由模式匹配考虑整个请求URL,包括查询参数字符串。由于路由模式可能不包含查询参数,因此使路由模式与查询参数匹配URL的唯一方法是使用通配符来将其终止`*`。
可以指定一条路由,而无需与工作人员关联;这将消除所有不太具体的模式。例如,考虑这对路由模式,一个带有工作脚本,另一个不带有:
~~~
*example.com/images/cat.png -> <no script>
*example.com/images/* -> worker-script
~~~
在这个例子中,发往example.com所有请求和其路径由前缀`/images/`将被路由到`worker-script`,*除了*为`/images/cat.png`,这将旁路工人完全。由于查询字符串的存在,路径为的请求`/images/cat.png?foo=bar`将被路由到`worker-script`。
### 有效期
这是控制路由模式有效性的全套规则:
* **路线模式必须包括您的区域**
如果您的区域是`example.com`,那么您可以拥有的最简单的路由模式是`example.com`,它将与`http://example.com/`和匹配`https://example.com/`,*仅此而已*。与URL一样,`/`如果未指定,则存在一个隐含路径。
* **路由模式可能不包含任何查询参数**
例如,`https://example.com/?anything`不是有效的路由模式。
* **路由模式可以选择以http://或https://开头**
如果您在路由模式中省略方案,则该方案将同时匹配http://和https:// URL。如果包含http://或https://,则分别仅匹配HTTP或HTTPS请求。
* `https://*.example.com/`匹配`https://www.example.com/`但*不*匹配`http://www.example.com/`
* `*.example.com/`同时匹配`https://www.example.com/`*和*`http://www.example.com/`。
* **主机名可以选择以`*`**
如果路由模式主机名以开头`*`,则它匹配主机*和*所有子主机。如果路由模式主机名以开头`*.`,则它*仅*与所有子主机匹配。
* `*example.com/`比赛`https://example.com/`*和*`https://www.example.com/`
* `*.example.com/`匹配`https://www.example.com/`但*不*匹配`https://example.com/`
* **路径可以可选地以`*`**
如果路由模式路径以结尾`*`,则它匹配该路径的所有后缀。
* `https://example.com/path*`比赛`https://example.com/path`*和*`https://example.com/path2`*与*`https://example.com/path/readme.txt`
* `https://example.com/path/*`匹配`https://example.com/path/readme.txt`但*不*匹配`https://example.com/path2`。
* **子域必须具有DNS记录**
所有子域都必须具有[DNS记录](https://support.cloudflare.com/hc/en-us/articles/360019093151#h_60566325041543261564371)才能在Cloudflare上代理并与Workers兼容。例如,如果您具有路由模式`*.example.com`且没有DNS记录,则对subdomain.example.com的任何请求都将导致error`ERR_NAME_NOT_RESOLVED`。
- 关于本翻译文档
- 快速开始
- 模版库
- 讲解
- Workers页面
- 从0开始
- 从已有页面开始
- 从已有Worder开始
- 工具
- Cli工具 wrangler
- 安装
- 指令
- 配置
- 环境
- Webpack
- 密钥
- KV
- 网站
- Playground
- ServerLess插件
- Terraform
- REST API
- Making Requests
- Scripts
- Bindings
- Routes
- Integrations
- 相关
- 工作原理
- 安全
- 使用缓存
- 价格
- Routes
- Limits
- 提示
- 调试技巧
- 调试header
- FetchEvent生命周期
- 请求上下文
- 请求sign
- 参考
- runtime API
- Web Standards
- fetch
- fetchEvent
- Response
- Request
- KV
- Environment Variables
- Streams
- Encoding
- Web Crypto
- Cache API
- HTMLRewriter
- Workers KV
- Use cases
- Namespaces