Por que o favicon às vezes não aparece e gera erros de "página não encontrada" e outras vezes

8

Como a pergunta indica, às vezes o registro de Drupal mostra que o favicon não foi encontrado. Na verdade, ele não aparece na guia do navegador ou na barra de endereço. Em outros momentos, mesmo na mesma sessão de surf, ele aparece.

Por que faz isso e como posso evitá-lo para que o favicon sempre seja exibido?

Estou usando a versão Drupal 7.22. com um subtema personalizado e um tema de administrador (Stark).

Meu favicon está definido na configuração do tema do subtema em sites / default / files / images / favicon.ico e está localizado lá, como verifiquei via FTP.

O log mostra que o navegador está procurando em example.com/favicon.ico.

O subtema personalizado que eu uso possui <link rel="shortcut icon" href="http://example.com/sites/default/files/images/favicon.ico"; type="image/vnd.microsoft.icon" />o código-fonte e o tema administrador (Stark) <link type="image/vnd.microsoft.icon" href="http://example.com/misc/favicon.ico"; rel="shortcut icon">e esse arquivo também existe nesse local (na verdade, não usando example.com, é claro).

Drupal está usando URLs limpos.

O servidor da web é o Apache no Debian Linux.

Obrigado.

authentictech
fonte
Talvez ajude se você fornecer referenciador para esses erros, deve estar no log.
Mołot
@ Molot O campo de referência está em branco ou em outra página no site em todos os casos que verifiquei no log.
Authentictech
Você pode editar na mensagem de log para mostrar o caminho, qual servidor da web você está usando e se mod_rewrite funciona (por exemplo, URLs limpos)?
mpdonadio

Respostas:

4

Alguns navegadores pesquisam o favicon em http://example.com/favicon.ico sem verificar. Mas eles são minoria agora.

Mais respeito:

<link rel="icon" href="http://example.com/img/icon.png">

conforme descrito pelo W3C .

Se o seu site tentar usar a <link>abordagem, mas falhar em algumas páginas, como páginas de administração renderizadas usando um modelo diferente, e você não tiver o favicon.ico no local padrão, obterá os efeitos exatamente descritos.

Se o navegador estiver procurando por http://example.com/favicon.ico quando você o tiver <link rel="shortcut icon">, é um problema do navegador, não o seu. Isso significa que o navegador (ou pelo menos essa parte do código) está desatualizado, a menos que olhe primeiro pelo URI correto e receba outro erro, mas você verá dois erros no log, um no lugar certo e o segundo no desatualizado. Na fila do Mozilla, há vários relatórios sobre detecção incorreta de favicon pelo FireFox - no exemplo este . Ele mostra como até os navegadores modernos às vezes podem voltar aos métodos antigos.

Mołot
fonte
Sim, o log mostra que o navegador está procurando em example.com/favicon.ico . O subtema personalizado que eu uso para o site fornece <link rel = "ícone de atalho" href = " example.com/sites/default/files/images/favicon.ico " type = "image / vnd.microsoft.icon" /> no código-fonte (não na verdade exemplo.com), que é o local correto. Se eu desativar a sobreposição, o tema admin está usando <link type = "image / vnd.microsoft.icon" href = " example.com/misc/favicon.ico " rel = "ícone de atalho"> e esse arquivo também existe nesse local.
Authentictech
Tudo parece correto como deveria ser. Então, isso é um problema no navegador ou no site? Onde eu iria consertar isso? Obrigado.
Authentictech
@authentictech se o navegador estiver procurando por example.com/favicon.ico quando você tiver o <link rel="shortcut icon">problema, é um problema do navegador, não seu. Isso significa que o navegador está desatualizado, a menos que olhe primeiro para o lugar correto e receba outro erro, mas você o veria nos logs imediatamente antes deste. Vou atualizar minha pergunta.
Mołot 6/07/2013
11
@MPD Pode não ser servido pelo Apache; Do Panteão nginx configuração omite essa regra, por exemplo, (se bem me lembro)
Clive
2
@authentictech O Firefox possui vários relatórios de erros abertos sobre manuseio inadequado de favicon. Como este por exemplo. Partes do código são antigas, tristes, mas verdadeiras. Se você quiser lidar com isso, poderá adicionar a reescrita no seu .htaccess, mas ele estará invadindo um bug do navegador, sem corrigir o bug do site.
Mołot
2

A solução rápida e fácil para esse problema é usar o módulo Redirecionar e fazer um redirecionamento para ele.

Depois que o módulo estiver ativado, vá para admin/config/search/redirect/adde use favicon.icoem from e to deve ser o local real do seu tema favicon.ico.

cdmo
fonte
Esse arquivo é tratado automaticamente pelo .htaccess, para que a solicitação nunca chegue ao Drupal para o módulo de redirecionamento lidar com ele.
Vincent Vincent
11
Sim, chega ao Drupal. Caso contrário, como seria registrado no log do Drupal? Eu usei essa abordagem com sucesso na produção.
cdmo
11
Você está certo, acabei de testar isso. Editou sua resposta original para que eu possa mudar meu voto negativo para um voto positivo.
Vincent Vincent
0

Se você estiver usando o Apache, a melhor maneira de corrigi-lo é colocar:

<Location /favicon.ico>
  ErrorDocument 404 "No favicon"
</Location>

Esse código deve funcionar no seu arquivo vhost ou também no arquivo .htaccess, consulte http://httpd.apache.org/docs/2.4/sections.html para obter mais detalhes

Colin Shipton
fonte