APACHE - FAVICON E ROBOTS PADRÃO

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