使用参数将根“/”重定向到 uri

Redirect root "/" to uri with parameters

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

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

我试过的配置是

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

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

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

也许我只是忽略了什么。

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

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

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


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

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

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