🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 路线 是否应该在基于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)来添加路由模式。 ![工人路线模态](https://developers.cloudflare.com/workers/about/media/add-route-modal.png) 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`。