Republicado de VivaOLinux.com.br
Autor: kleber galucio <klebrr@univirr.rr.gov.br>
Data: 08/05/2010
Apache - favicon e robots padrão
Essa dica evita que o log de erros do Apache exiba um monte de erros 404 conforme abaixo:
[Sat May 01 07:49:01 2010] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
E exibe um ícone e um txt padrão e personalizado caso não exista.
Solução 1
Criar um arquivo e colocar na raiz do site (/var/www/favicon.ico e robots.txt) e ou em todas as pastas raiz de múltiplos sites (virtual hosts).
Solução 2
Criar uma diretiva no httpd.conf que aponte o arquivo de ícone e texto padrão de todos os sites hospedados num mesmo servidor.
Siga os passos:
Tenha em mãos os seus próprios arquivos favicon.ico e robots.txt personalizados.
Crie uma pasta "ex" na raiz do servidor web (ver DocumentRoot). Exemplo:
# mkdir -p /var/www/ex
E copie os arquivos nessa pasta.
Edite o arquivo httpd.conf e logo abaixo da diretiva:
DocumentRoot "/var/www" # Diretório raiz do site
# bloco de diretivas do diretório raiz
.......
# fim do bloco, insira abaixo
Insira as linhas conforme abaixo:
# Abaixo a solução para quando não existir um arquivo favicon.ico ou robots.txt
# em qualquer (sub)diretório com acesso público.
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .*favicon\.ico$ /var/www/ex/favicon.ico [L]
RewriteRule .*robots\.txt$ /var/www/ex/robots.txt [L]
Caso utilize VirtualHosts, coloque antes do final de cada diretiva.
...
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .*favicon\.ico$ /var/www/ex/favicon.ico [L]
RewriteRule .*robots\.txt$ /var/www/ex/robots.txt [L]
# fim da diretiva
Reinicie o Apache para aplicar as alterações:
# /etc/init.d/apachectl restart
E teste acessando localhost/qualquerpasta/favicon.ico ou dominiovirtual/qualquerpasta/favicon.ico.
Lembrando que a diretiva abaixo:
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
Testa se o arquivo requisitado existe no diretório especificado na (URL). Se existir um arquivo favicon.ico ou robots.txt em qualquer (sub)diretório, será exibido esse arquivo ao invés do que você personalizou.
Leitura recomendada: favicon.ico, robots.txt, apache2.2/virutalhost, mod_rewrite
Solução 3
Utilizando .htaccess (caso não tenha acesso ao httpd.conf).
Coloque o ícone e o robots.txt numa pasta "ex" de forma que tenha acesso público.
Crie um arquivo .htaccess na raiz do site (public_html) com o seguinte conteúdo:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .*favicon\.ico$ /ex/favicon.ico [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .*robots\.txt$ /ex/robots.txt [L]
Comentários