我正在尝试在docker-compose文件中的一个容器上实现Traefik的重定向配置。我在Nginx服务配置中找到了一个名为merge_slashes
的类似配置。这与我想要实现的行为完全相同。
尝试了此处描述的Nginx服务的正则表达式替代方法:https://www.ctrl.blog/entry/relative-double-slashes-url.html
rewrite ^(.*)//(.*)$ $1/$2;
rewrite ^ $uri permanent;
但是这种方法不适用于Traefik。
labels:
traefik.merge_slashes.frontend.rule: 'Host:${PROJECT_BASE_URL}'
traefik.merge_slashes.frontend.redirect.regex: '(.*)\\/\\/+(.*)'
traefik.merge_slashes.frontend.redirect.replacement: '$${1}/$${2}'
traefik.merge_slashes.frontend.redirect.permanent: 'true'
通过使用以下配置可以实现的目标:
labels:
traefik.merge_slashes.frontend.rule: 'Host:${PROJECT_BASE_URL}'
traefik.merge_slashes.frontend.redirect.regex: '(.*\\:\\/\\/.*)\\/\\/+(.*)'
traefik.merge_slashes.frontend.redirect.replacement: '$${1}/$${2}'
traefik.merge_slashes.frontend.redirect.permanent: 'true'
但是对于URL这样的过多重定向问题,可能会发生以下情况:http://localhost/some/////////////////////////////////////////////example///url