Regex, как сопоставить подстроку, которая не содержит фиксированной строки. Регекс в Трафике - PullRequest
0 голосов
/ 21 октября 2019

У меня несколько контейнеров, запущенных на одной странице (some.website.com) с traefik и docker-compose, я пытаюсь создать правило для пересылки каждого запроса с реферером из определенного субдомена только в один и тот же субдоменесли в перенаправлении отсутствует поддомен.

, то есть: some.website.com/dolibarr/ Я пытаюсь войти в систему, но он отправляет меня по адресу: some.website.com/answer.php?whwhat

Я уже исправил это с помощью правил traefik, поэтому он отправляет меня по адресу: some.website.com/dolibarr/answer.php?whither, но есть несколько других подстраниц, которые отправляют меня на 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/ [чтобы избежать получения some.website.com/dolibarr/dolibarr/]

1 Ответ

0 голосов
/ 08 ноября 2019

То, что вы пытаетесь сделать, - это негативный взгляд .

Traefik написан на Go, поэтому использует регулярное выражение Go, которое не поддерживает отрицательный прогноз, как объяснено здесь . Вы должны будете переписать свое регулярное выражение так, чтобы вы его не использовали.

...