Redirect Traefik从一台主机重定向到另一台主机

Redirect Traefik从一台主机重定向到另一台主机,redirect,reverse-proxy,docker-swarm,traefik,Redirect,Reverse Proxy,Docker Swarm,Traefik,我们决定从子域结构转移到一个带有路径前缀的根域,但是我们在internet上得到了许多旧的URL。那么,有没有办法将重定向从旧URL添加到新URL? 例如 我们将subdomain test.example.com切换到example.com/test,我可以使用docker swarm YAML文件中的字符串正确访问站点 traefik.frontend.rule:Host:example.com;PathPrefixStrip:/test 但当我尝试添加到Traefik配置重定向时,如下所示

我们决定从子域结构转移到一个带有路径前缀的根域,但是我们在internet上得到了许多旧的URL。那么,有没有办法将重定向从旧URL添加到新URL? 例如 我们将subdomain test.example.com切换到example.com/test,我可以使用docker swarm YAML文件中的字符串正确访问站点
traefik.frontend.rule:Host:example.com;PathPrefixStrip:/test
但当我尝试添加到Traefik配置重定向时,如下所示:

[http.middlewares]
  [http.middlewares.test-redirectregex.redirectRegex]
    regex = "^https://(*).example.com/)"
    replacement = "^https://example.com/${1}"
Traefik说它不知道把这个请求转发到哪里 如果我试图添加:
traefik.frontend.rule:Host:test.example.com,example.com;PathPrefixStrip:/test

Traefik为两台主机添加前缀。有没有办法在不添加第二个反向代理的情况下解决此问题?

假设您使用的是Traefik 2.1,您可以使用下面的Traefik中间件

[http.middlewares]
  [http.middlewares.blog-redirect.redirectRegex]
    regex = "^(https?://)(.*).example.com/(.*)$"
    replacement = "${1}example.com/${2}/${3}"
    permanent = true
激活上述中间件的重要步骤是在相应的路由器和服务上添加以下标签。例如,如果您是一个
blog
服务,并且为它定义了一个
blog
路由器,那么您需要将下表添加到服务中

traefik.http.routers.blog.middlewares=blog-redirect
此外,您的路由规则应该与下面的规则类似,以便能够处理两个域(或者您为每个服务定义多个路由)


在这里,您可以找到有关流量和重定向的更多信息

您是否使用traefik 2.1?
- traefik.http.routers.blog.rule=Host(`example.com`) && Path(`/test`) || Host(`api.example.com``)