gpt4 book ai didi

正则表达式替换 Traefik 给出 404

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:27 26 4
gpt4 key购买 nike

我在 Traefik 代理后面有一个 docker。我尝试将所有流量(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。它还在每个 url 之后放置一个 /

- 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}

最佳答案

一段时间以来,我一直在为我的 docker run 命令(可执行脚本文件)和正则表达式/替换标签而苦恼。这就是我将它用于 www 到非 www url 重写的原因:

  1. 请注意 GO 的正则表达式库略有不同 - GO's regex lib here
  2. 您可以在“标签”下使用 docker inspect 命令进行检查属性,如果您的正则表达式被运行脚本正确捕获。
  3. 双引号和单引号是个问题,不知何故双引号对我不起作用(可能是 shell 去掉了双引号,没有双引号 traefik 无法计算标签)...我怎么在表达式周围使用单引号没有任何进一步的问题。
  4. 在您的示例中,你们都使用句点(点),根据定义,这是一个通配符。我试图转义它们,但 GO 的正则表达式库似乎错过了转义句点字符的机会,因此我使用了字符集 [.](您不必转义句点)。
  5. 访问 GO 中捕获的组是由 ${} 完成的。但是我在他们的正则表达式文档中找不到它。我从 try & error 那里得到了这些信息。

我的 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}'

关于正则表达式替换 Traefik 给出 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51420986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com