logo hsb.horse
← Voltar para o índice do blog

Blog

Como configurar o roteamento de subdiretórios com Cloudflare Workers

Etapas de configuração para implantar um projeto Astro em um subdiretório com Cloudflare Workers. Organizado como ajustar wrangler.json e astro.config.

Publicado:

Em 28/11/2025, este site está operando em dois projetos Astro.

  • hsbt.horse/*: Raiz
  • hsbt.horse/tools/*: Ferramentas

Não há problema se você escrever o root wrangler.json simplesmente de acordo com o documento oficial.

{
"name": "root",
"compatibility_date": "2025-11-19",
"route": "hsbt.horse/*",
"assets": {
"directory": "./dist/",
"not_found_handling": "404-page"
},
"preview_urls": false
}

Por outro lado, as ferramentas não funcionaram como esperado, a menos que algum trabalho fosse feito.

Problema: roteamento de subdiretório resulta em 404

Escreva wrangler.json da seguinte maneira.

{
"name": "tool",
"compatibility_date": "2025-11-19",
"route": "hsbt.horse/tools/*",
"assets": {
"directory": "./dist/",
"not_found_handling": "404-page"
},
"preview_urls": false
}

Não há problema com a forma como está escrito, mas se você implantá-lo como está, receberá um erro 404.

A razão é que o comportamento de upload de arquivos em dist/tools de acordo com a estrutura hierárquica de /tools/* descrita na rota parece ser a especificação do wrangler.

Solução: Defina base e outDir em astro.config.mjs

Este método pode ser usado ao tratar src/pages como tools/.

Se você definir base e outDir como abaixo em astro.config.mjs, funcionará conforme o esperado.

export default defineConfig({
site: "https://hsbt.horse",
base: "/tools/",
outDir: "./dist/tools",
})

base adiciona um prefixo aos links e caminhos de ativos gerados pelo Astro.

outDir altera o destino de saída da construção para ./dist/tools para corresponder à estrutura hierárquica esperada pelo wrangler.

Não planejado: implemente várias páginas em src/pages/tools

Não altere as configurações em astro.config.mjs. Base não está definida e outDir não foi alterado de dist.

Em vez disso, lidaremos com isso estabelecendo regras de implementação para o roteamento baseado em arquivo em src/pages.

Ao implementar as páginas necessárias em src/pages/tools, você pode enviar várias páginas para dist/tools sem alterar as configurações.

No entanto, com este método, o diretório _astro (vários JS, CSS, ativos agrupados) será criado diretamente em dist, portanto, o HTML em dist/tools será implantado, mas os ativos não serão implantados.

resumo

Ao implantar um projeto em um subdiretório com Cloudflare Workers, você precisa ajustar não apenas as configurações de rota do wrangler, mas também base e outDir no lado Astro.

Ao alinhar a hierarquia, o wrangler poderá fazer upload de arquivos corretamente.