← Cloudflare Workers / workers / static-assets
Přesměrování
Chcete-li na Workeru se statickými assets použít vlastní přesměrování, deklarujte je v textovém souboru s názvem _redirects bez přípony souboru v adresáři statických prostředků vašeho projektu. Tento soubor se sám o sobě neposkytuje jako statický prostředek, ale zpracuje ho Workers a jeho pravidla se použijí na odpovědi statických prostředků.
Pokud používáte framework, budete mít často adresář s názvem public/ nebo static/, a obvykle obsahuje assety připravené k nasazení, jako jsou favicony, robots.txt soubory a manifesty webu. Tyto soubory se během sestavení zkopírují do výsledného výstupního adresáře, takže je to ideální místo pro vytváření vašich _redirects soubor. Pokud nepoužíváte framework, _redirects soubor můžete vložit přímo do adresář statických aktiv.
Struktura
Podle řádku
Na jednom řádku lze definovat pouze jedno přesměrování, které musí mít tento formát, jinak bude ignorováno.
[source] [destination] [code?]-
sourcestringpovinné- Cesta k souboru.
- Může zahrnovat zástupné znaky (
*) a zástupné symboly. - Protože fragmenty vyhodnocuje váš prohlížeč, a ne síť Cloudflare, žádné fragmenty ve zdrojovém kódu nejsou vyhodnoceny.
-
destinationstringpovinné- Cesta k souboru nebo externí odkaz.
- Může zahrnovat fragmenty, query stringy, splaty, a zástupné symboly.
-
codenumber(default: 302) optional- Volitelný parametr
Řádky začínající # budou považovány za komentáře.
Podle souboru
A _redirects soubor je omezen na 2,000 statických přesměrování a 100 dynamických přesměrování, tedy dohromady nejvýše 2,100 přesměrování. Každá deklarace přesměrování má limit 1,000 znaků.
Ve vašem _redirects soubor:
- Na pořadí vašich přesměrování záleží. Pokud existuje více přesměrování pro stejné
sourcecestu, použije se nejvýše umístěné přesměrování. - Statická přesměrování by měla být uvedena před dynamickými přesměrováními.
- Přesměrování se provede vždy, bez ohledu na to, zda příchozímu požadavku odpovídá nějaký asset.
Kompletní příklad s více přesměrováními může vypadat takto:
/home301 / 301
/home302 / 302
/querystrings /?query=string 301
/twitch https://twitch.tv
/trailing /trailing/ 301
/notrailing/ /nottrailing 301
/page/ /page2/#fragment 301
/blog/* https://blog.my.domain/:splat
/products/:code/:name /products?code=:code&name=:namePokročilá přesměrování
Cloudflare v současnosti nabízí omezenou podporu pro pokročilá přesměrování.
| Funkce | Podpora | Příklad | Poznámky |
|---|---|---|---|
| Přesměrování (301, 302, 303, 307, 308) | ✅ | /home / 301 |
Jako výchozí stavový kód se používá 302. |
| Přepisy (jiné stavové kódy) | ❌ | /blog/* /blog/404.html 404 |
|
| Splaty | ✅ | /blog/* /posts/:splat |
Viz Splaty. |
| Zástupné symboly | ✅ | /blog/:year/:month/:date/:slug /news/:year/:month/:date/:slug |
Viz Zástupné symboly. |
| Parametry dotazu | ❌ | /shop id=:id /blog/:id 301 |
|
| Proxování | ✅ | /blog/* /news/:splat 200 |
Viz Proxování. |
| Přesměrování na úrovni domény | ❌ | workers.example.com/* workers.example.com/blog/:splat 301 |
|
| Přesměrování podle země nebo jazyka | ❌ | / /us 302 Country=us |
|
| Přesměrování podle cookie | ❌ | /\* /preview/:splat 302 Cookie=preview |
Přesměrování a shoda hlaviček
Přesměrování se provádí před hlavičkami, takže pokud požadavek odpovídá pravidlům v obou souborech, přesměrování má přednost.
Splaty
Při shodě splat (hvězdička, *) hladově porovná všechny znaky. V URL smíte použít jen jeden splat.
Nalezenou hodnotu lze použít v cíli přesměrování s :splat.
Zástupné symboly
Zástupný symbol lze definovat pomocí :placeholder_name. Dvojtečka (:) následovaný písmenem označuje začátek zástupného symbolu a název zástupného symbolu, který následuje, smí obsahovat pouze alfanumerické znaky a podtržítka (:[A-Za-z]\w*). Na každý pojmenovaný zástupný symbol lze odkázat jen jednou. Zástupné symboly odpovídají všem znakům kromě oddělovače, kterým je v případě hostitele tečka (.) nebo lomítko (/) a smí to být pouze lomítko (/) pokud je součástí cesty.
Podobně lze shodnutou hodnotu použít v hodnotách přesměrování pomocí :placeholder_name.
/movies/:title /media/:titleProxování
Proxování na vašem webu podporuje pouze relativní URL adresy. Externí domény proxovat nelze.
Použije se pouze první přesměrování ve vašem souboru. Například v následujícím příkladu požadavek na /a vykreslí /b, a požadavek na /b vykreslí /c, ale /a nezobrazí /c.
/a /b 200
/b /c 200Překročit _redirects limity
A _redirects soubor má maximálně 2,000 statických přesměrování a 100 dynamických přesměrování, tedy dohromady nejvýše 2,100 přesměrování. Použijte Bulk Redirects ke zpracování přesměrování, které překračuje limit 2,100 pravidel přesměrování v _redirects.
Chcete-li používat Bulk Redirects, přečtěte si Dokumentace dashboardu pro Bulk Redirects nebo Dokumentace API pro Bulk Redirects.