Vous êtes ici

Régler les erreurs 404 du fichier favicon.ico

Portrait de DrupalFacile
Soumis par DrupalFacile le mer, 31/10/2012 - 08:29

Récemment, vous avez peut-être lu le billet sur les erreurs 404 provoquées par les périphériques Apple. Voici aujourd'hui un cas un peu similaire avec le fichier favicon.ico. Si vous consultez vos logs Apache, vous verrez probablement une erreur du type :

123.123.123.123 - - [24/Oct/2012:04:03:40 +0000] "GET /favicon.ico HTTP/1.0" 404 63 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0" vhost=monsite.com host=www.monsite.com hosting_site=monsite request_time=0

Pourtant, dans le <head> de votre rendu de page HTML, il existe bien une ligne prévue pour le favicon :

<link rel="shortcut icon" href="http://www.monsite.com/misc/favicon.ico" type="image/vnd.microsoft.icon" />

Oui mais, certains navigateurs et sites regardent à la racine directement, probablement dû à l'héritage de Microsoft Internet Explorer qui réclamait ce fichier auparavant.

Comme on veut éviter un bootstrap inutile avec cette page d'erreur, on va donc créer un lien symbolique depuis includes/misc/favicon.ico (si vous désirez utiliser le favicon fournit avec Drupal) ou chercher le fichier à lier, depuis le thème par exemple. Vous pouvez créer un lien symbolique de la façon suivante (en supposant que vous soyez déjà dans le docroot) :

$ ln -s /includes/misc/favicon.ico

Ce qui vous donnera ensuite le lien symbolique attendu :

lrwxr-xr-x   1 admin  staff     16 Oct 22 13:34 favicon.ico -> misc/favicon.ico

Ainsi, vous éviterez ces erreurs 404 inutiles. Efficace et rapide.

Cas particulier des multi-sites

Mais que se passera t-il si vous faites cela pour une installation Drupal multi-sites ? Eh bien hélas, le même favicon.ico sera utilisé pour chacun des sites, ce qui n'est pas optimal, pas vrai ? Vous pouvez le cas échéant changer de stratégie et passer par une réécriture d'URL dans votre fichier .htaccess :

RewriteCond %{HTTP_HOST} \.monsite\.com$ [NC]
RewriteRule ^favicon.ico$ sites/monsite.com/themes/montheme/favicon.ico [NC,L]

Ainsi, il vous sera possible de charger conditionnellement le fichier favicon.ico de votre choix, et ce pour chacun de vos sites.

Partager ce contenu