首页 > 解决方案 > 使用参数将根“/”重定向到 uri

问题描述

我使用 caddy 将一些默认的查询字符串参数通过重定向它传递给我的应用程序,如下所示:

https://example.com/ --> https://example.com/?someQuery=someValue

我尝试的配置是

redir / {
    if {path} is /
    / /?someQuery=someValue
}

这种方法的问题在于它还与查询字符串匹配路径,因此最终会陷入无休止的重定向循环。

如果我没有将查询值传递给它(没有查询的 uri),如何仅将其重定向到查询字符串 URI?

也许我只是忽略了一些东西。

标签: redirectcaddycaddyfile

解决方案


{path}您可以测试{uri}包含片段和查询的对象,而不是针对进行测试。

redir {
  if {uri} is /
  / /?someQuery=someValue
}

在这种情况下,请求/?someQuery=someValue不会产生重定向。


或者,您可以简单地添加另一个if语句,检查您计划添加的查询:

redir {
  if {path} is /
  if {query} not_has someQuery=someValue
  / /?someQuery=someValue
}

这将通过在第一个循环之后停止来停止重定向循环,尽管您仍然会忽略 URI 的其余部分并将重定向到其他片段和查询信息(这可能是不受欢迎的)。


推荐阅读