POP HOSTING

Subdomínio com pasta fora do public_html no cPanel imprimir

  • subdomínio, document root, public_html, tweak settings, restrict document roots, laravel, cpanel
  • 0

Como apontar um subdomínio do cPanel para uma pasta fora do public_html, quando isso é permitido, e como proteger o código do sistema mesmo sem essa opção.

  • Tempo: 10 min
  • Nível: Intermediário
  • Vale para: cPanel e WHM 120 ou mais novos
  • Atualizado: outubro de 2026

Todo domínio e subdomínio no cPanel tem uma pasta raiz (document root): é a pasta cujo conteúdo aparece no navegador. Por padrão, o cPanel exige que essa pasta fique dentro do public_html, como public_html/loja para loja.seudominio.com.br. Desenvolvedores às vezes pedem uma pasta fora dele, como /home/minhaconta/loja.seudominio.com.br, para separar os sites ou deixar o código fora do alcance do navegador.

Quem decide se pode: a configuração do servidor

A trava é uma opção do WHM chamada Restrict document roots to public_html, que vale para o servidor inteiro e vem ligada de fábrica. Só o administrador do servidor (acesso root) consegue mudá-la. Na prática:

  • Hospedagem compartilhada ou revenda: você não altera essa opção. Se o seu projeto exige pasta fora do public_html, consulte o suporte antes, ou use a alternativa segura mais abaixo, que resolve a maioria dos casos.
  • VPS ou servidor dedicado com WHM: você mesmo pode liberar, como mostrado a seguir.

Como liberar no WHM (VPS ou dedicado)

  1. Entre no WHM como root e abra Server Configuration » Tweak Settings.
  2. Vá na aba Domains e localize Restrict document roots to public_html. Se preferir, digite o nome no campo de busca da página.
  3. Mude para Off e clique em Save no fim da página.
Atenção: essa mudança vale para todas as contas do servidor. Uma pasta raiz apontada para o lugar errado (a própria home, por exemplo) pode expor arquivos de configuração, e-mails e backups da conta pela web. Libere só se você controla todas as contas do servidor.

Como criar o subdomínio com a pasta escolhida

  1. No cPanel, abra Domains (Domínios) e clique em Create A New Domain.
  2. Digite o subdomínio completo, como loja.seudominio.com.br.
  3. Desmarque Share document root para liberar o campo Document Root.
  4. Informe a pasta. Com a trava ligada, só são aceitas pastas dentro do public_html, como public_html/loja. Com a trava desligada, você pode usar algo como loja.seudominio.com.br, que fica em /home/minhaconta/loja.seudominio.com.br.
  5. Clique em Submit. Para mudar a pasta depois, clique em Manage na linha do domínio.

A alternativa segura que funciona em qualquer plano

Na maioria das vezes, o objetivo real não é a pasta raiz ficar fora do public_html, e sim que o código do sistema (configurações, senhas, bibliotecas) não possa ser baixado pelo navegador. Isso dá para fazer sem mexer em nenhuma trava, porque você pode guardar arquivos em qualquer lugar da sua home; só a pasta pública precisa estar dentro do public_html:

  1. Envie o sistema para fora do public_html, por exemplo /home/minhaconta/meuapp.
  2. Crie o subdomínio apontando para uma pasta pública vazia, como public_html/meuapp.
  3. Copie para ela só os arquivos públicos do sistema (em frameworks como Laravel, o conteúdo da pasta public: index.php, .htaccess, CSS, JS e imagens).
  4. Ajuste os caminhos no index.php para apontar para a pasta de fora. No Laravel, troque __DIR__.'/../ por '/home/minhaconta/meuapp/ em todas as linhas que usam esse caminho (as que carregam storage, vendor/autoload.php e bootstrap/app.php).

Assim o .env, as configurações e o código ficam fora da web, e o subdomínio mostra só o que precisa.

Dica: evite apontar o subdomínio para public_html/meuapp/public com o sistema inteiro em public_html/meuapp. O subdomínio fica certo, mas o domínio principal passa a exibir o código: qualquer um pode tentar abrir seudominio.com.br/meuapp/.env.

Problemas comuns

O cPanel recusa a pasta ou recoloca o public_html no começo

A trava Restrict document roots to public_html está ligada no servidor. Use uma pasta dentro do public_html ou a alternativa segura acima.

Subdomínio abre "Index of /" ou página em branco

A pasta raiz está vazia ou sem index.php/index.html. Confira em Domains » Manage qual pasta o subdomínio usa.

Subdomínio novo não abre

Se o DNS do domínio está em outro provedor, como a Cloudflare, crie lá também o registro do subdomínio apontando para a hospedagem. O SSL do subdomínio é emitido quando o DNS já aponta certo.

Precisa de controle total do servidor, inclusive do WHM? Conheça os servidores dedicados da POP Hosting, com suporte em português.

Esta resposta lhe foi útil?
« Retornar