Configuração do Apache para vários sites com arquivos comuns
Pergunta
Tenho aproximadamente 50 sites que usam exatamente os mesmos arquivos, exceto CSS e IMAGES. Atualmente, duplico os arquivos sempre que crio um novo site e carrego CSS e imagens diferentes.
O que eu quero é configurar cada vhost para ter o mesmo DocumentRoot então adicione AliasMatch para as pastas css e imagens, por exemplo:
#Common Files VHOST
<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName commonfiles.com
ServerAlias www.commonfiles.com
DocumentRoot /home/commonfiles/public_html
</VirtualHost>
#Sample vhost for 1 of the 50 sites.
<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName mytest.com
ServerAlias www.mytest.com
DocumentRoot /home/commonfiles/public_html
......
AliasMatch /css/(.*) /home/ftpuser/public_html/mycss/$1
</VirtualHost>
O alias funciona perfeitamente para arquivos personalizados, mas os arquivos comuns não podem ser acessados devido a erros de permissão:
[Mon Nov 16 09:31:01 2009] [crit] [client xxx.xxx.xxx.xxx] (13)Permission denied: /home/commonfiles/public_html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
Esta é a configuração atual do servidor que acho que pode ser parte do problema (configuração anterior do administrador do servidor):
- Apache(Apache/2.2.14 (Unix)
- PHP 5.2.11
- Padrão CentOS 4.8 i686
- Manipulador PHP 5 é dso
- Apache suEXEC está ativado
Alguma sugestão?
Solução
Parece que por padrão a pasta public_html tem permissões de 750, mudei para 755 e atualizei as restrições open_basedir e tudo começou a funcionar muito bem.
Só preciso ter certeza de que ainda posso ter um .htaccess por site.
Outras dicas
Não parece que o AliasMatch seja o problema, a mensagem de erro está apontando para o seu arquivo htaccess.Você verificou as permissões?A qual usuário ele pertence?
Outra solução seria criar links simbólicos em cada domínio apontando para a pasta onde residem os arquivos comuns.