Aprenda a configurar Virtual Hosts no XAMPP para rodar seus projetos PHP em qualquer pasta do seu computador, sem depender do
htdocs
.
- 🎯 Sobre
- ✨ Funcionalidades
- 📋 Pré-requisitos
- 🚀 Configuração Passo a Passo
- 📂 Exemplos
- 🔒 Segurança e Configurações
- ❓ Problemas Comuns e Troubleshooting
- 🚀 Alternativas Modernas
- 📊 Considerações de Escalabilidade
- 🤝 Contribuindo
- 📄 Licença
Este repositório ensina como configurar Virtual Hosts no XAMPP para Windows, permitindo que você execute seus projetos PHP em pastas personalizadas ao invés de usar apenas o diretório htdocs
. Isso oferece maior flexibilidade e organização para seus projetos de desenvolvimento.
⚠️ AVISO IMPORTANTE: Este tutorial é destinado APENAS para desenvolvimento local. As configurações padrão são INSEGURAS para produção e podem expor seu sistema a vulnerabilidades.
- ✅ Organização: Mantenha seus projetos em pastas específicas
- ✅ URLs amigáveis: Acesse via
http://projeto.local
ao invés dehttp://localhost/projeto
- ✅ Flexibilidade: Não dependa mais do diretório
htdocs
- ✅ Produtividade: Configure uma vez e use em todos os projetos
- 📂 Configuração completa de Virtual Hosts passo a passo
- 🖥️ Acesso rápido aos projetos via URLs personalizadas
- ⚙️ Arquivos de exemplo prontos para uso (desenvolvimento e produção)
- 🔒 Configurações seguras para ambiente de produção
- 🔧 Scripts de automação avançados com validação e rollback
- 📝 Tutorial detalhado com troubleshooting avançado
- 🎨 Interface moderna e fácil de seguir
- 🚀 Alternativas modernas (Docker, Laravel Valet, etc.)
- 📊 Considerações de escalabilidade para múltiplos projetos
- 🛡️ Sistema de backup automático com rollback
Antes de começar, certifique-se de ter:
- ✅ XAMPP instalado no Windows
- ✅ Apache rodando no XAMPP
- ✅ Permissões de administrador para editar arquivos do sistema
- ✅ Editor de texto (Bloco de Notas, VS Code, Notepad++, etc.)
-
Abra o arquivo de configuração:
C:\xampp\apache\conf\extra\httpd-vhosts.conf
-
Adicione a configuração no final do arquivo:
<VirtualHost *:80> ServerName projetoPHP.local DocumentRoot "C:/caminho/para/seu/projeto" <Directory "C:/caminho/para/seu/projeto"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Directory> </VirtualHost>
⚠️ Importante: Altere o caminhoDocumentRoot
eDirectory
para a pasta do seu projeto.
-
Localize o arquivo hosts:
C:\Windows\System32\drivers\etc\hosts
-
Abra como administrador:
- Clique com o botão direito no Bloco de Notas
- Selecione "Executar como administrador"
- Abra o arquivo
hosts
(mude o filtro para "Todos os arquivos")
-
Adicione a linha no final:
127.0.0.1 projetoPHP.local
⚠️ Dica: Se você usar VS Code, abra ele como administrador para editar o arquivo mais facilmente.
- Abra o XAMPP Control Panel
- Pare o Apache (se estiver rodando)
- Inicie o Apache novamente
Acesse no seu navegador:
http://projetoPHP.local/
Se tudo estiver correto, seu projeto será exibido! 🎉
Este repositório inclui arquivos de exemplo na pasta exemplos/
:
- 📄
httpd-vhosts.conf
- Exemplo de configuração do Apache (DESENVOLVIMENTO) - 📄
httpd-vhosts-seguro.conf
- Configurações seguras para PRODUÇÃO - 📄
hosts
- Exemplo de configuração do arquivo hosts - 🔧
scripts/
- Scripts de automação avançados:- 🚀
criar-virtualhost.bat
- Criação básica - 🚀
criar-virtualhost-avancado.bat
- Criação com validação robusta - 📋
listar-virtualhosts.bat
- Listagem detalhada - 🗑️
remover-virtualhost.bat
- Remoção segura - 🔄
rollback.bat
- Sistema de rollback - 🔍
validar-configuracao.bat
- Validação completa
- 🚀
Para usar com seu próprio projeto, substitua:
projetoPHP.local
→seuprojeto.local
C:/caminho/para/seu/projeto
→C:/caminho/real/do/seu/projeto
As configurações padrão incluem:
Options Indexes
- Permite listagem de diretóriosOptions ExecCGI
- Permite execução de scripts CGIAllowOverride All
- Permite sobrescrita de configurações
🚨 NUNCA use estas configurações em produção!
Use o arquivo httpd-vhosts-seguro.conf
para ambiente de produção:
<VirtualHost *:80>
ServerName projetoPHP.local
DocumentRoot "C:/caminho/para/seu/projeto"
<Directory "C:/caminho/para/seu/projeto">
# 🔒 CONFIGURAÇÕES SEGURAS
Options -Indexes -ExecCGI FollowSymLinks
AllowOverride None
Require all granted
# 🛡️ Bloqueia arquivos sensíveis
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak)$">
Require all denied
</FilesMatch>
</Directory>
</VirtualHost>
Possíveis causas e soluções:
-
Apache não está rodando
- Verifique no XAMPP Control Panel
- Reinicie o Apache
-
Arquivo hosts não foi salvo corretamente
- Abra como administrador
- Verifique se não tem extensão .txt
- Teste com
ping projetoPHP.local
-
Cache DNS do navegador
- Limpe o cache do navegador
- Use modo incógnito
- Execute
ipconfig /flushdns
no CMD
-
Porta 80 ocupada
- Verifique se outro serviço está usando a porta 80
- Use
netstat -an | findstr :80
para verificar
Soluções:
-
Abra como administrador
- Clique com botão direito no editor
- Selecione "Executar como administrador"
-
Use editores alternativos
- VS Code como administrador
- Notepad++ como administrador
- PowerShell:
notepad C:\Windows\System32\drivers\etc\hosts
-
Verifique permissões
- Certifique-se de ter permissões de administrador
- Desative temporariamente o antivírus
Possíveis causas:
-
Caminho incorreto no DocumentRoot
- Verifique se o caminho existe
- Use barras
/
ou\
consistentemente - Evite espaços nos caminhos
-
Arquivo index não encontrado
- Crie um arquivo
index.php
ouindex.html
- Verifique se o arquivo está na pasta correta
- Crie um arquivo
-
Permissões de pasta
- Verifique se o Apache tem acesso à pasta
- Teste com uma pasta dentro do
htdocs
primeiro
Possíveis causas:
-
Sintaxe incorreta no httpd-vhosts.conf
- Verifique se não há erros de sintaxe
- Teste com configuração mínima primeiro
-
Módulos do Apache não habilitados
- Verifique se o módulo
vhost_alias
está habilitado - Reinicie o Apache após mudanças
- Verifique se o módulo
-
Arquivo .htaccess com erro
- Renomeie temporariamente o .htaccess
- Teste sem o arquivo
Verificar configuração do Apache:
# Teste a configuração
C:\xampp\apache\bin\httpd.exe -t
# Ver logs de erro
C:\xampp\apache\logs\error.log
Verificar se o Virtual Host está ativo:
# No CMD como administrador
netstat -an | findstr :80
Limpar cache DNS:
ipconfig /flushdns
ipconfig /registerdns
Para desenvolvimento moderno, considere usar Docker:
# Dockerfile
FROM php:8.1-apache
COPY . /var/www/html/
EXPOSE 80
# docker-compose.yml
version: "3.8"
services:
web:
build: .
ports:
- "80:80"
volumes:
- .:/var/www/html
Vantagens:
- ✅ Isolamento completo
- ✅ Configuração reproduzível
- ✅ Fácil de compartilhar
- ✅ Sem conflitos de versão
Para projetos Laravel:
# Instalar via Composer
composer global require cretueusebiu/valet-windows
# Configurar
valet install
valet park
Vantagens:
- ✅ Configuração automática
- ✅ SSL automático
- ✅ Múltiplos projetos
- ✅ Performance superior
Alternativa ao XAMPP com interface gráfica:
- Interface mais amigável
- Configuração visual de Virtual Hosts
- Melhor gerenciamento de serviços
Para desenvolvimento moderno:
- Laravel Sail: Docker para Laravel
- Lando: Ferramenta de desenvolvimento local
- DDEV: Ambiente de desenvolvimento containerizado
Limitações do XAMPP:
⚠️ Performance pode ser afetada com 50+ Virtual Hosts⚠️ Arquivohttpd-vhosts.conf
pode ficar muito grande⚠️ Tempo de inicialização do Apache pode aumentar
Recomendações:
- ✅ Use scripts avançados para gerenciar múltiplos projetos
- ✅ Monitore logs do Apache regularmente
- ✅ Considere alternativas modernas para projetos complexos
- ✅ Faça backup regular das configurações
Para ambientes com muitos Virtual Hosts:
# Use configurações otimizadas
<VirtualHost *:80>
ServerName projeto.local
DocumentRoot "C:/caminho/projeto"
<Directory "C:/caminho/projeto">
# Configurações mínimas para performance
Options -Indexes -ExecCGI
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
Docker (Recomendado para múltiplos projetos):
# docker-compose.yml
version: "3.8"
services:
projeto1:
build: ./projeto1
ports:
- "8080:80"
projeto2:
build: ./projeto2
ports:
- "8081:80"
projeto3:
build: ./projeto3
ports:
- "8082:80"
Vantagens do Docker:
- ✅ Isolamento completo entre projetos
- ✅ Escalabilidade horizontal
- ✅ Configuração reproduzível
- ✅ Sem conflitos de versão
Contribuições são sempre bem-vindas! Se você tem sugestões ou encontrou algum problema:
- 🍴 Faça um Fork do projeto
- 🌿 Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature
) - 💾 Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - 📤 Push para a branch (
git push origin feature/AmazingFeature
) - 🔄 Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
⭐ Se este tutorial te ajudou, considere dar uma estrela no repositório! ⭐
Feito por Gerson Resplandes