【问题标题】:Regex replacement Traefik gives 404正则表达式替换 Traefik 给出 404
【发布时间】:2018-12-27 11:50:36
【问题描述】:

我有一个位于 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。它还在每个网址后放置一个/

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

【问题讨论】:

    标签: regex go traefik


    【解决方案1】:

    我不知道为什么。但是删除非捕获组并取消转义点对我有用。

    工作示例:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-20
        • 2019-01-24
        • 2015-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-20
        相关资源
        最近更新 更多