Para hospedar sua documentação em um subcaminho personalizado, como yoursite.com/docs, usando o Cloudflare, você precisará criar e configurar um Cloudflare Worker.
Antes de começar, você precisa de uma conta no Cloudflare e de um nome de domínio (que pode ser gerenciado dentro ou fora do Cloudflare).

Estrutura do repositório

Seus arquivos de documentação devem ser organizados no repositório para corresponder à estrutura de subcaminho escolhida. Por exemplo, se você quiser sua documentação em yoursite.com/docs, crie um diretório docs/ com todos os seus arquivos de documentação.

Configurar um Cloudflare Worker

Crie um Cloudflare Worker seguindo o guia de primeiros passos do Cloudflare Workers, caso ainda não tenha feito isso.
Se o seu provedor de DNS for Cloudflare, não ative o proxy para o registro CNAME.

Proxies com implantações na Vercel

Se você utilizar o Cloudflare como proxy com implantações na Vercel, é fundamental garantir a configuração correta para evitar conflitos com a verificação de domínio da Vercel e o provisionamento de certificados SSL. Uma configuração de proxy incorreta pode impedir a Vercel de provisionar certificados SSL do Let’s Encrypt e causar falhas na verificação de domínio.

Lista de permissões de caminhos obrigatória

Seu Cloudflare Worker deve permitir o tráfego para estes caminhos específicos sem bloqueio ou redirecionamento:
  • /.well-known/acme-challenge/* - Necessário para a verificação de certificado do Let’s Encrypt
  • /.well-known/vercel/* - Necessário para a verificação de domínio da Vercel
Embora o Cloudflare trate automaticamente muitas regras de verificação, a criação de regras personalizadas adicionais pode, inadvertidamente, bloquear esse tráfego crítico.

Requisitos para encaminhamento de cabeçalhos

Certifique-se de que o cabeçalho HOST seja encaminhado corretamente na configuração do seu Worker. Se os cabeçalhos não forem encaminhados adequadamente, as solicitações de verificação falharão.

Configurar o roteamento

No painel do Cloudflare, selecione Edit Code e adicione o script a seguir ao código do seu Worker. Consulte a documentação do Cloudflare para mais informações sobre como editar um Worker.
Substitua “[SUBDOMAIN]” pelo seu subdomínio exclusivo, “[YOUR_DOMAIN]” pela URL base do seu site e “/docs” pelo subcaminho desejado, se for diferente.
addEventListener("fetch", (event) => {
  event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
  try {
    const urlObject = new URL(request.url);
    
    // Se a solicitação for para um caminho de verificação do Vercel, permita que ela passe
    if (urlObject.pathname.startsWith('/.well-known/')) {
      return await fetch(request);
    }
    
    // Se a solicitação for para o subdiretório de docs
    if (/^\/docs/.test(urlObject.pathname)) {
      // Então faça proxy para o Mintlify
      const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
      const CUSTOM_URL = "[YOUR_DOMAIN]";

      let url = new URL(request.url);
      url.hostname = DOCS_URL;

      let proxyRequest = new Request(url, request);

      proxyRequest.headers.set("Host", DOCS_URL);
      proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL);
      proxyRequest.headers.set("X-Forwarded-Proto", "https");
      // Se estiver implantando na Vercel, preserve o IP do cliente
      proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP"));

      return await fetch(proxyRequest);
    }
  } catch (error) {
    // Se nenhuma ação for aplicada, processe a solicitação normalmente
    return await fetch(request);
  }
}
Selecione Deploy e aguarde a propagação das alterações.
Após configurar o seu DNS, subdomínios personalizados geralmente ficam disponíveis em poucos minutos. A propagação do DNS às vezes pode levar de 1 a 4 horas e, em casos raros, até 48 horas. Se o seu subdomínio não estiver disponível imediatamente, aguarde antes de tentar solucionar o problema.

Teste seu Worker

Depois que o código for implantado, teste seu Worker para garantir que ele direcione para sua documentação do Mintlify.
  1. Teste usando a URL de pré-visualização do Worker: your-worker.your-subdomain.workers.dev/docs
  2. Verifique se o Worker direciona para sua documentação do Mintlify e para seu site.

Adicionar domínio personalizado

  1. No seu painel do Cloudflare, navegue até o seu Worker.
  2. Vá para Settings > Domains & Routes > Add > Custom Domain.
  3. Adicione seu domínio.
Recomendamos adicionar seu domínio tanto com quanto sem o prefixo www..
Consulte Add a custom domain na documentação do Cloudflare para mais informações.

Resolver conflitos de DNS

Se o seu domínio já aponta para outro serviço, você deve remover o registro de DNS existente. Seu Cloudflare Worker deve estar configurado para controlar todo o tráfego do seu domínio.
  1. Exclua o registro de DNS existente do seu domínio. Consulte Excluir registros de DNS na documentação da Cloudflare para mais informações.
  2. Retorne ao seu Worker e adicione seu domínio personalizado.

Roteamento personalizado no Webflow

Se você usa o Webflow para hospedar seu site principal e quer servir a documentação da Mintlify em /docs no mesmo domínio, será necessário configurar roteamento personalizado via Cloudflare Workers para encaminhar (proxy) todo o tráfego que não seja de docs para o seu site principal.
Certifique-se de que seu site principal esteja configurado em uma landing page antes de implantar este Worker, caso contrário os visitantes do seu site principal verão erros.
  1. No Webflow, configure uma landing page para o seu site principal, como landing.yoursite.com. Essa será a página que os visitantes verão ao acessar seu site.
  2. Implante seu site principal na landing page. Isso garante que seu site principal permaneça acessível enquanto você configura o Worker.
  3. Para evitar conflitos, atualize quaisquer URLs absolutas no seu site principal para URLs relativas.
  4. No Cloudflare, selecione Edit Code e adicione o script a seguir no código do seu Worker.
Substitua “[SUBDOMAIN]” pelo seu subdomínio exclusivo, “[YOUR_DOMAIN]” pela URL base do seu site, “[LANDING_DOMAIN]” pela URL da sua landing page e “/docs” pelo subcaminho desejado, se for diferente.
  addEventListener("fetch", (event) => {
  event.respondWith(handleRequest(event.request));
  });
  async function handleRequest(request) {
  try {
    const urlObject = new URL(request.url);
    
    // If the request is to a Vercel verification path, allow it to pass through
   <AzureIAASDatabaseConnectionAndSQLString>
      return await fetch(request);
    }
    
    // If the request is to the docs subdirectory
    if (/^\/docs/.test(urlObject.pathname)) {
      // Proxy to Mintlify
      const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
      const CUSTOM_URL = "[YOUR_DOMAIN]";
      let url = new URL(request.url);
      url.hostname = DOCS_URL;
      let proxyRequest = new Request(url, request);
      proxyRequest.headers.set("Host", DOCS_URL);
      proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL);
      proxyRequest.headers.set("X-Forwarded-Proto", "https");
      // If deploying to Vercel, preserve client IP
      proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP"));
      return await fetch(proxyRequest);
    }
    // Route everything else to main site
    const MAIN_SITE_URL = "[LANDING_DOMAIN]";
    if (MAIN_SITE_URL && MAIN_SITE_URL !== "[LANDING_DOMAIN]") {
      let mainSiteUrl = new URL(request.url);
      mainSiteUrl.hostname = MAIN_SITE_URL;
      return await fetch(mainSiteUrl, {
        method: request.method,
        headers: request.headers,
        body: request.body
      });
    }
  } catch (error) {
    // If no action found, serve the regular request
    return await fetch(request);
  }
  }
  1. Selecione Deploy e aguarde a propagação das alterações.
Após configurar o seu DNS, subdomínios personalizados geralmente ficam disponíveis em poucos minutos. A propagação do DNS às vezes pode levar de 1 a 4 horas e, em casos raros, até 48 horas. Se o seu subdomínio não estiver disponível imediatamente, aguarde antes de tentar solucionar o problema.