Skip to content

Traefik ReplacePathRegex 中间件文档

ReplacePathRegex(正则替换路径)

replacePathRegex 中间件会:

  • 将匹配的路径替换为指定的路径。
  • 将原始路径存储在 X-Replaced-Path 头中。

配置示例

YAML 格式:

yaml
# 使用正则替换路径
http:
  middlewares:
    test-replacepathregex:
      replacePathRegex:
        regex: "^/foo/(.*)"
        replacement: "/bar/$1"

TOML 格式:

toml
# 使用正则替换路径
[http.middlewares]
  [http.middlewares.test-replacepathregex.replacePathRegex]
    regex = "^/foo/(.*)"
    replacement = "/bar/$1"

Labels 格式:

yaml
# 使用正则替换路径
labels:
  - "traefik.http.middlewares.test-replacepathregex.replacepathregex.regex=^/foo/(.*)"
  - "traefik.http.middlewares.test-replacepathregex.replacepathregex.replacement=/bar/$$1"

Kubernetes 格式:

yaml
# 使用正则替换路径
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-replacepathregex
spec:
  replacePathRegex:
    regex: ^/foo/(.*)
    replacement: /bar/$1

配置选项

字段描述默认值必填
regex用于从请求 URL 中匹配和捕获路径的正则表达式。""
replacement替换路径格式,可以包含捕获的变量。$1x 等同于 ${1x},而不是 ${1}x(参见 Regexp.Expand),因此请使用 ${1} 语法。""

提示

可以使用在线工具如 Go PlaygroundRegex101 测试正则表达式和替换。

在 YAML 中定义正则表达式时,任何转义字符都需要双重转义:example\.com 需要写成 example\\.com


在生产环境使用 Traefik OSS?

如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。

基于 MIT 协议发布