Docker compose 正则表达式如何匹配不包含固定字符串的子字符串。Traefik中的正则表达式

Docker compose 正则表达式如何匹配不包含固定字符串的子字符串。Traefik中的正则表达式,docker-compose,rules,traefik,Docker Compose,Rules,Traefik,我用traefik和docker compose在同一个页面(some.website.com)上运行了几个容器,我试图制定一个规则,只有在重定向没有子域的情况下,才将每个请求和引用从某个子域转发到同一子域 i、 e:some.website.com/dolibarr/我尝试登录,但它将我发送到:some.website.com/answer.php?随便什么 我已经用traefik规则解决了这个问题,因此它将我发送到: some.website.com/dolibarr/answer.php?

我用traefik和docker compose在同一个页面(some.website.com)上运行了几个容器,我试图制定一个规则,只有在重定向没有子域的情况下,才将每个请求和引用从某个子域转发到同一子域

i、 e:some.website.com/dolibarr/我尝试登录,但它将我发送到:some.website.com/answer.php?随便什么

我已经用traefik规则解决了这个问题,因此它将我发送到: some.website.com/dolibarr/answer.php?随便什么 但是还有其他几个子页面将我发送到some.website.com/所以我必须为每个子页面制定一条规则

traefik规则我已经有了

labels:
      - "traefik.enable=true"
      - "traefik.backend=dolibarr"
      - "traefik.dolibarr.frontend.rule=Host:${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD};PathPrefixStrip:/${DOLIBARR_PATH}"
      - "traefik.dolibarr_url_fix.frontend.rule=Host:${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD};PathPrefix: /admin, /user, /expensereport, /index.php;HeadersRegexp: referer, ^https://${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}/${DOLIBARR_PATH}/"
      - "traefik.dolibarr_url_fix.frontend.redirect.permanent=true"
      - "traefik.dolibarr_url_fix.frontend.redirect.regex=https://${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}/dolibarr/(.*)"
      - "traefik.dolibarr_url_fix.frontend.redirect.replacement=https://${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}/${DOLIBARR_PATH}/$$1"


正则表达式应该类似于^((?!dolibarr)。*$,但是我不能让它与traefik规则一起工作


我正在尝试执行我在乞丐会议上解释的规则,因此只有当推荐人来自some.website.com/dolibarr/(*)并且重定向不是some.website.com/dolibarr/[为了避免获得some.website.com/dolibarr/dolibarr/]时,它才会将我发送到some.website.com/dolibarr/][/p>您试图做的是

Traefik是用Go编写的,因此使用Go的regex,正如前面解释的,它不支持负前瞻。你必须以一种不用的方式重写你的正则表达式

更新: 实现您想要的目标的一种方法是使用避免无限循环。还应小心naem碰撞,最好使用尾随斜杠:

labels:
      - "traefik.enable=true"
      - "traefik.backend=dolibarr"
      - "traefik.dolibarr.frontend.rule=Host:${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}; PathPrefixStrip:/${DOLIBARR_PATH}/"
      - "traefik.dolibarr.frontend.priority=100"
      - "traefik.dolibarr_url_fix.frontend.rule=Host:${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}; HeadersRegexp: referer, ^https://${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}/${DOLIBARR_PATH}/"
      - "traefik.dolibarr_url_fix.frontend.priority=50"
      - "traefik.dolibarr_url_fix.frontend.redirect.permanent=true"
      - "traefik.dolibarr_url_fix.frontend.redirect.regex=https://${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}/(.*)"
      - "traefik.dolibarr_url_fix.frontend.redirect.replacement=https://${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}/${DOLIBARR_PATH}/$$1"
      - "traefik.dolibarr_trail_slash_fix.frontend.rule=Host:${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}; Path:/${DOLIBARR_PATH}"
      - "traefik.dolibarr_trail_slash_fix.frontend.priority=10"
      - "traefik.dolibarr_trail_slash_fix.frontend.redirect.permanent=true"
      - "traefik.dolibarr_trail_slash_fix.frontend.redirect.regex=https://${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}/${DOLIBARR_PATH}"
      - "traefik.dolibarr_trail_slash_fix.frontend.redirect.replacement=https://${SUBDOMAIN}.${DOMAIN_NAME}.${DOMAIN_TLD}/${DOLIBARR_PATH}/"

是否有可能在没有负面展望的情况下实现所要求的目标?如果是,如何进行?