- Výraz pravidla:
http.host == "example.com" and starts_with(http.request.uri.path, "/downloads/") - Host header > Přepsat na:
assets.example.com
← Cloudflare Rules / rules / reference
Řešení problémů s Rules
Interakce mezi přesměrováními a dalšími produkty Cloudflare
Vaše přesměrování mohou narušovat produkty a funkce Cloudflare, jako jsou challenges. Zvažte vyloučení /cdn-cgi/* cestu URI ve výrazu pravidla, abyste předešli problémům. Případně můžete vyloučit jen dílčí cestu, například /cdn-cgi/challenge-platform/* abyste se vyhnuli problémům s konkrétními funkcemi (v tomto příkladu Cloudflare challenges).
Můžete také zvážit vyloučení /.well-known/* cestu URL používanou několika ověřovacími službami. Více informací najdete v Interakce mezi přesměrováními a ověřovacími postupy, jako je HTTP DCV s dalšími informacemi.
Interakce mezi Cloudflare challenges a funkcemi Rules
Pokud zadáváte challenge pro danou cestu URI, u které je povolena jedna nebo více funkcí Rules, byste měli vyloučit cesty URI začínající na /cdn-cgi/challenge-platform/ ve výrazech pravidel, abyste předešli smyčkám challenge.
Můžete například definovat složený výraz pro své pravidlo pomocí and operátoru a starts_with() funkce:
<OTHER_RULE_CONDITIONS> and not starts_with(http.request.uri, "/cdn-cgi/challenge-platform/")Interakce mezi přesměrováními a ověřovacími postupy, jako je HTTP DCV
Cesty používané v ověřovacích postupech, jako je ověření vlastního hostname (Cloudflare for SaaS), Ověřování domény Pages, nebo Ověření kontroly domény přes HTTP (DCV) mohou být ovlivněny přesměrováními.
Zvažte vyloučení /.well-known/* cestu URI z vašeho pravidla, abyste předešli problémům.
Hlavička Content-Length odstraněna z odpovědi
Cloudflare může odebrat Content-Length hlavičku z odpovědí doručovaných návštěvníkům webu. Pokud návštěvník musí obdržet Content-Length hlavičku nakonfigurujte origin server tak, aby zahrnoval cache-control: no-transform hlavičku HTTP v odpovědi.
Toto pravidlo se nemusí vztahovat na váš provoz
Pokud výraz vašeho pravidla odpovídá hostname, pro který jste nevytvořili DNS záznam ani nezapnuli proxy provozu přes Cloudflare, zobrazí se vyskakovací okno s několika možnostmi:
- Pokud pro daný hostitel neexistuje žádný záznam DNS: Určuje, zda pokračovat ve vytváření pravidla, nebo vytvořit nový proxovaný DNS záznam pro daný hostitel.
- Pokud pro hostitele existuje záznam DNS, ale provoz není proxován: Určuje, zda pokračovat ve vytváření pravidla, nebo zapnout proxy pro existující DNS záznam.
Pokud se rozhodnete vytvořit nový záznam DNS, bude mít nový záznam rules značku a následující přidružený komentář:
Created during Cloudflare Rules deployment process for <RULE_NAME>Přepsání URL ovlivňují ostatní funkce Rules spuštěné později
Pokud přepíšete cestu URI pomocí Přepsání URL, to může ovlivnit další funkce Rules spouštěné později, například Origin Rules, pokud ve svém filtrovacím výrazu obsahují cestu URI.
Zvažte následující konfiguraci origin rule:
Pokud nakonfigurujete nové přepsání URL (URL rewrite) s následující konfigurací:
- Výraz pravidla:
http.host == "example.com" and starts_with(http.request.uri.path, "/downloads/") - Cesta > Přepsat na > Dynamický:
regex_replace(http.request.uri.path, "^/downloads/", "/")
Pravidlo Origin Rules už nebude odpovídat /downloads/* cest, protože přepisy URL se spouštějí před Origin Rules a cesta URI bude přepsána z "/downloads/" na "/".
Řešení
Abyste této situaci předešli, použijte ve výrazu pravidla raw fields. Raw fields zůstávají po celou dobu vyhodnocování požadavku neměnná a nejsou ovlivněna akcemi dříve shodujících se pravidel.
V aktuálním příkladu byste mohli použít raw.http.request.uri.path pole v obou pravidlech:
Přepsání URL
- Výraz pravidla:
http.host == "example.com" and starts_with(raw.http.request.uri.path, "/downloads/") - Cesta > Přepsat na > Dynamický:
regex_replace(raw.http.request.uri.path, "^/downloads/", "/")
Origin rule
- Výraz pravidla:
http.host == "example.com" and starts_with(raw.http.request.uri.path, "/downloads/") - Host header > Přepsat na:
assets.example.com
Díky tomu budou obě pravidla fungovat podle očekávání. Navíc to umožňuje použít v obou pravidlech stejný výraz, a to i v případě, že první pravidlo mění hodnotu cesty URI.
Seznam nezpracovaných polí naleznete v Přehled polí.