我有一个在Traefik代理后面的码头工人。我尝试将所有流量(cdn除外)重定向到https://www.mysite.nl
。我配置了一个正则表达式,如下所示。但不幸的是,它不起作用。我在所有主机上收到404。我想念什么?
您可以在此处测试正则表达式:https://regex101.com/r/mwt573/2
- traefik.frontend.priority=5
- traefik.frontend.rule=Host:mysite.nl, www.mysite.nl, mysite.com, www.mysite.com, cdn.mysite.net
- traefik.frontend.redirect.regex=^https?://(?:www.)?mysite\.(?:nl|com)(.*)
- traefik.frontend.redirect.replacement=https://www.mysite.nl$${1}
此设置对我有用,但没有将.com域重定向到.nl。它还在每个网址后放置一个/
。
- traefik.frontend.priority=5
- traefik.frontend.rule=Host:mysite.nl, www.mysite.nl, cdn.mysite.net, mysite.com, www.mysite.com
- traefik.frontend.redirect.regex=^https?://mysite.nl/(.*)
- frontend.redirect.replacement=https://www.mysite.nl/$${1}
答案 0 :(得分:0)
我不确定为什么。但是删除非捕获组并转义该点对我有用。
工作示例:
- traefik.frontend.priority=5
- traefik.frontend.rule=Host:mysite.nl, www.mysite.nl, cdn.mysite.net, mysite.com, www.mysite.com
- traefik.frontend.redirect.regex=^https?://(www.)?mysite(.nl|.com)(.*)
- traefik.frontend.redirect.replacement=https://www.mysite.nl$${3}
答案 1 :(得分:0)
一段时间以来,我一直在使用docker run命令(可执行脚本文件)和regex /替换标签。这就是我将它用于www到非www网址重写的原因:
docker inspect
命令在“标签”下进行检查
属性,如果运行脚本正确捕获了您的正则表达式。我将www转换为非www的结果是:
-l traefik.frontend.redirect.regex='^https?://(?:www[.])(.*)'
-l traefik.frontend.redirect.replacement='https://${1}'
您声明的解决方案应该可以正常工作,我对此进行了略微重写:
-l traefik.frontend.redirect.regex='^https?://(?:www[.])?mysite[.](?:nl|com)(.*)'
-l traefik.frontend.redirect.replacement='https://www.mysite.nl${1}'