You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Caddyfile实现路径重写并追加指定URL参数?

问题描述

我当前使用Caddy作为反向代理,现有Caddyfile配置如下:

rewrite / /index.html

该配置可实现:

  • https://localhost/ --> https://localhost/index.html
  • https://localhost/?p1=v1&p2=v2 --> https://localhost/index.html?p1=v1&p2=v2

现在需要额外实现将路径/static重写为index.html,同时追加URL参数static=true,且该参数不能影响原有参数,即:

  • https://localhost/static --> https://localhost/index.html?static=true
  • https://localhost/static?p1=v1&p2=v2 --> https://localhost/index.html?static=true&p1=v1&p2=v2

尝试了以下配置但未生效:

rewrite /static /index.html?static=true

请问应如何调整Caddyfile以实现需求?

解决方案

你之前的配置会直接覆盖原有请求的查询参数,正确的做法是利用Caddy的内置变量{query}保留原有参数,同时追加新参数。调整后的Caddyfile如下:

# 保留原有根路径的重写规则
rewrite / /index.html

# 处理/static路径的重写,追加static=true并保留原有参数
rewrite /static {
    to /index.html?static=true{query}
}

配置说明

  • {query}是Caddy的内置变量,会自动获取请求中原有的查询字符串(例如请求/static?p1=v1时,{query}的值是&p1=v1)。当请求没有原有参数时,{query}为空,最终重写结果就是/index.html?static=true;当存在原有参数时,会自动拼接成目标格式,完全满足需求。
  • 规则顺序上,由于/static和/是两个独立路径,顺序不影响匹配结果;若后续有更复杂的前缀匹配规则,建议将更具体的规则放在前面。

内容的提问来源于stack exchange,提问作者michaelT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:20:22