文件
贊助的專案

回應匹配器

回應匹配器 可用於根據特定條件篩選(或分類)回應。

這些通常只會作為配置出現在其他特定指令中,以便在將回應寫出到用戶端時做出決策。

語法

@name {
	status <code...>
	header <field> [<value>]
}

匹配器

status

status <code...>

依 HTTP 狀態碼。

  • <code...> 是 HTTP 狀態碼的列表。特殊情況是像 2xx3xx 這樣的字串,它們分別匹配 200-299300-399 範圍內的所有狀態碼。

範例

@success status 2xx
header <field> [<value>]

依回應標頭欄位。

  • <field> 是要檢查的 HTTP 標頭欄位的名稱。
    • 如果以 ! 為前綴,則該欄位必須不存在才能匹配(省略值參數)。
  • <value> 是欄位必須具有的值才能匹配。
    • 如果以 * 為前綴,則執行快速後綴匹配(出現在結尾)。
    • 如果以 * 為後綴,則執行快速前綴匹配(出現在開頭)。
    • 如果用 * 括起來,則執行快速子字串匹配(出現在任何位置)。
    • 否則,它是快速完全匹配。

同一組內的不同標頭欄位是 AND 關係。每個欄位的多個值是 OR 關係。

請注意,標頭欄位可能會重複且具有不同的值。後端應用程式必須考慮到標頭欄位值是陣列,而不是單一值,並且 Caddy 不會解釋此類困境中的含義。

範例

匹配包含值 barFoo 標頭的回應

@upgrade header Foo *bar*

匹配具有值 barbazFoo 標頭的回應

@foo {
	header Foo bar
	header Foo baz
}

匹配完全沒有 Foo 標頭欄位的回應

@not_foo header !Foo