Почему значок иногда не отображается и выдает ошибки «страница не найдена», а в других случаях -

8

Как следует из вопроса, иногда журнал Drupal показывает, что значок не найден. Действительно, он не отображается на вкладке браузера или в адресной строке. В другое время, даже в течение того же сеанса серфинга, он появляется.

Почему это происходит, и как я могу предотвратить это, чтобы иконка всегда отображалась?

Я использую версию Drupal 7.22. с пользовательской подтемой и темой администратора (Старк).

Мой favicon установлен в конфигурации темы подтем по адресу sites / default / files / images / favicon.ico, и он находится там, как я проверил по FTP.

Журнал показывает, что браузер ищет в example.com/favicon.ico.

Пользовательская подтема, которую я использую, содержится <link rel="shortcut icon" href="http://example.com/sites/default/files/images/favicon.ico"; type="image/vnd.microsoft.icon" />в исходном коде и в теме администратора (Stark), <link type="image/vnd.microsoft.icon" href="http://example.com/misc/favicon.ico"; rel="shortcut icon">и этот файл также существует в этом месте (конечно, не на примере example.com).

Drupal использует чистые URL.

Веб-сервер Apache на Debian Linux.

Спасибо.

authentictech
источник
Может помочь, если вы предоставите реферер для этих ошибок, должно быть в журнале.
Молот
@Molot Поле реферера является либо пустой, либо другой страницей на сайте во всех случаях, которые я проверил в журнале.
authentictech
Можете ли вы отредактировать в сообщении журнала, чтобы показать путь, какой веб-сервер вы используете, а также работает ли mod_rewrite (т.е. чистые URL-адреса)?
mpdonadio

Ответы:

4

Некоторые браузеры ищут favicon на http://example.com/favicon.ico без проверки. Но они сейчас в меньшинстве.

Самое уважение:

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

как описано W3C .

Если ваш сайт пытается использовать <link>подход, но не работает на некоторых страницах, например на страницах администратора, отображаемых с использованием другого шаблона, и у вас нет файла favicon.ico по умолчанию, вы получите точно описанные эффекты.

Если браузер ищет http://example.com/favicon.ico, когда он у вас есть, <link rel="shortcut icon">это проблема браузера, а не ваша. Это означает, что браузер (или, по крайней мере, эта часть его кода) устарел, если сначала он не просматривался под правильным URI и не получал еще одну ошибку, но затем вы увидите две ошибки в журнале, одну для правильного места, вторую для устаревшей. В очереди Mozilla есть ряд сообщений о неправильном обнаружении значка в FireFox - например, этот . Это показывает, как даже современные браузеры могут иногда прибегать к старым методам.

МОЛОТ
источник
Да, журнал показывает, что браузер ищет в example.com/favicon.ico . Пользовательская подтема, которую я использую для сайта, дает <link rel = "ярлык" href = " example.com/sites/default/files/images/favicon.ico " type = "image / vnd.microsoft.icon" /> в исходном коде (на самом деле не example.com), который является правильным местоположением. Если я отключаю наложение, тема администратора использует <link type = "image / vnd.microsoft.icon" href = " example.com/misc/favicon.ico " rel = "значок ярлыка">, и этот файл также существует в этом месте.
authentictech
Все кажется правильным, как и должно быть. Так это проблема браузера или проблема сайта? Куда бы я пошел, чтобы исправить это? Спасибо.
authentictech
@authentictech, если браузер ищет example.com/favicon.ico, когда у вас все правильно, <link rel="shortcut icon">это проблема браузера, а не ваша. Это означает, что браузер устарел, если сначала он не просматривался в нужном месте и не получал еще одну ошибку, но затем вы увидите его в журналах непосредственно перед этим. Я обновлю свой вопрос.
Молот
1
@MPD Это может не обслуживаться Apache; Например, в конфигурации nginx Пантеона это правило опускается (если я правильно помню)
Клайв
2
@authentictech Firefox имеет множество открытых сообщений об ошибках неправильной обработки избранного. Как этот, например. Части этого кода старые, грустные, но правдивые. Если вы хотите справиться с этим, вы можете добавить перезапись в ваш .htaccess, но это будет взламывать ошибку браузера, а не исправлять ошибку сайта.
Молот
2

Быстрое и простое решение этой проблемы заключается в использовании модуля Redirect и его перенаправлении.

После того, как модуль будет включен, перейдите в admin/config/search/redirect/addи используйте favicon.icoпод from и to, чтобы быть фактическим местоположением вашей темы favicon.ico.

CDMO
источник
Этот файл автоматически обрабатывается .htaccess, поэтому запрос никогда не попадает в Drupal, чтобы модуль Redirect мог его обработать.
Винсент
1
Да, это делает это для Drupal. Иначе как это будет зарегистрировано в журнале Drupal? Я успешно использовал этот подход в производстве.
cdmo
1
Вы правы, я только что проверил это. Отредактировал исходный ответ, чтобы я мог переключить свое отрицательное голосование на повышенное.
Винсент
0

Если вы используете Apache, я нашел лучший способ исправить это:

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

Этот код должен работать в вашем файле vhost или также должен работать в файле .htaccess, см. Http://httpd.apache.org/docs/2.4/sections.html для получения дополнительной информации.

Колин Шиптон
источник