Warum wird das Favicon manchmal nicht angezeigt und generiert Fehler "Seite nicht gefunden", und manchmal wird es angezeigt

8

Wie die Frage impliziert, zeigt Drupals Protokoll gelegentlich, dass das Favicon nicht gefunden wurde. In der Tat wird es nicht in der Browser-Registerkarte oder Adressleiste angezeigt. Zu anderen Zeiten wird es sogar innerhalb derselben Surf-Sitzung angezeigt.

Warum macht es das und wie kann ich es verhindern, damit das Favicon immer angezeigt wird?

Ich verwende die Version Drupal 7.22. mit einem benutzerdefinierten Unterthema und einem Admin-Thema (Stark).

Mein Favicon befindet sich in der Konfiguration des Unterthemas unter sites / default / files / images / favicon.ico und befindet sich dort, wie ich es über FTP überprüft habe.

Das Protokoll zeigt, dass der Browser unter example.com/favicon.ico sucht.

Das benutzerdefinierte Unterthema, das ich verwende, ist <link rel="shortcut icon" href="http://example.com/sites/default/files/images/favicon.ico"; type="image/vnd.microsoft.icon" />im Quellcode und im Admin- Design (Stark) enthalten, <link type="image/vnd.microsoft.icon" href="http://example.com/misc/favicon.ico"; rel="shortcut icon">und diese Datei ist auch an diesem Speicherort vorhanden (natürlich nicht mit example.com).

Drupal verwendet saubere URLs.

Der Webserver ist Apache unter Debian Linux.

Vielen Dank.

Authentictech
quelle
Könnte helfen, wenn Sie Referer für diese Fehler bereitstellen würden, sollte im Protokoll sein.
Mołot
@Molot Das Referrer-Feld ist in allen Fällen, in denen ich das Protokoll eingecheckt habe, entweder leer oder eine andere Seite auf der Site.
Authentictech
Können Sie in der Protokollnachricht bearbeiten, um den Pfad anzuzeigen, welchen Webserver Sie verwenden und ob mod_rewrite funktioniert (dh saubere URLs)?
mpdonadio

Antworten:

4

Einige Browser suchen unter http://example.com/favicon.ico nach favicon, ohne dies zu überprüfen. Aber sie sind jetzt eine Minderheit.

Der meiste Respekt:

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

wie von W3C beschrieben .

Wenn Ihre Site versucht, den <link>Ansatz zu verwenden , dies jedoch auf einigen Seiten fehlschlägt, z. B. auf Administrationsseiten, die mit einer anderen Vorlage gerendert wurden, und Sie favicon.ico nicht als Standardspeicherort haben, erhalten Sie genau beschriebene Effekte.

Wenn der Browser nach http://example.com/favicon.ico sucht, wenn Sie das richtige haben, handelt <link rel="shortcut icon">es sich um ein Browserproblem, nicht um Ihr Problem. Dies bedeutet, dass der Browser (oder zumindest der Teil seines Codes) veraltet ist, es sei denn, er hat zuerst unter der richtigen URI gesucht und einen weiteren Fehler erhalten. Dann werden im Protokoll zwei Fehler angezeigt, einer für den richtigen Ort und der zweite für den veralteten. In Mozillas Warteschlange gibt es eine Reihe von Berichten über die fehlerhafte Erkennung von Favicons durch FireFox - in diesem Beispiel . Es zeigt, wie selbst moderne Browser manchmal auf alte Methoden zurückgreifen können.

Mołot
quelle
Ja, das Protokoll zeigt, dass der Browser unter example.com/favicon.ico sucht . Das benutzerdefinierte Unterthema, das ich für die Site verwende, gibt <link rel = "Verknüpfungssymbol" href = " example.com/sites/default/files/images/favicon.ico " type = "image / vnd.microsoft.icon" /> an im Quellcode (eigentlich nicht example.com), der der richtige Speicherort ist. Wenn ich das Overlay deaktiviere, verwendet das Admin-Design <link type = "image / vnd.microsoft.icon" href = " example.com/misc/favicon.ico " rel = "Verknüpfungssymbol"> und diese Datei ist ebenfalls vorhanden an diesem Ort.
Authentictech
Alles scheint richtig zu sein, wie es sein sollte. Ist das also ein Browser- oder Website-Problem? Wohin würde ich gehen, um das Problem zu beheben? Vielen Dank.
Authentictech
@authentictech Wenn der Browser nach example.com/favicon.ico sucht, wenn Sie das richtige haben, handelt <link rel="shortcut icon">es sich um ein Browserproblem, nicht um Ihr Problem. Dies bedeutet, dass der Browser veraltet ist, es sei denn, er hat zuerst unter der richtigen Stelle gesucht und einen weiteren Fehler erhalten. Dann wird er in den Protokollen kurz vor diesem angezeigt. Ich werde meine Frage aktualisieren.
Mołot
1
@MPD Es wird möglicherweise nicht von Apache bereitgestellt. In der Nginx-Konfiguration von Pantheon wird diese Regel beispielsweise weggelassen (wenn ich mich recht erinnere)
Clive
2
@authentictech Firefox hat zahlreiche offene Fehlerberichte über unsachgemäße Favicon-Behandlung. Wie dieser zum Beispiel. Teile des Codes sind alt, traurig, aber wahr. Wenn Sie damit umgehen möchten, können Sie Ihrem .htaccess ein Umschreiben hinzufügen, es wird jedoch ein Browserfehler behoben und kein Sitefehler behoben.
Mołot
2

Eine schnelle und einfache Lösung für diesen Schmerz besteht darin, das Redirect- Modul zu verwenden und eine Weiterleitung dafür durchzuführen.

Sobald das Modul aktiviert ist, gehen Sie zu admin/config/search/redirect/addund verwenden Sie favicon.icounter von und bis sollte der tatsächliche Speicherort Ihres Themas sein favicon.ico.

cdmo
quelle
Diese Datei wird automatisch von .htaccess verarbeitet, sodass die Anforderung niemals an Drupal weitergeleitet wird, damit das Redirect-Modul sie verarbeitet.
Vincent
1
Ja, es schafft es nach Drupal. Wie würde es sonst im Drupal-Protokoll protokolliert? Ich habe diesen Ansatz erfolgreich in der Produktion eingesetzt.
CDMO
1
Du hast recht, ich habe das gerade getestet. Ihre ursprüngliche Antwort wurde bearbeitet, damit ich meine Abwertung in eine Aufwertung umwandeln kann.
Vincent
0

Wenn Sie Apache verwenden, habe ich Folgendes am besten behoben:

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

Dieser Code sollte in Ihrer vhost-Datei oder auch in der .htaccess-Datei funktionieren. Weitere Informationen finden Sie unter http://httpd.apache.org/docs/2.4/sections.html

Colin Shipton
quelle