Как отображать фавиконы в Lithium?

Как бы я отображал фавиконы в Lithium?

Прямо сейчас у меня есть это в моих макетах:

<?php echo $this->html->link('Icon', null, array('type' => 'icon')); ?>

Однако фавикон не отображается. Попытка просмотреть ресурс favicon через Chrome Inspector показывает мне неработающее изображение.

Я попытался загрузить изображение через HTTP, и изображение пусто:

$ wget http://example.org/favicon.ico
--2012-05-17 00:13:58--  http://example.org/favicon.ico
Resolving example.org... xx.xx.xx.xxx
Connecting to example.org|xx.xx.xx.xxx|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [image/x-icon]
Saving to: `favicon.ico'

    [ <=>                                                                   ] 0           --.-K/s   in 0s      

2012-05-17 00:13:59 (0.00 B/s) - `favicon.ico' saved [0/0]

Однако, если я скопирую изображение на свой локальный диск и просмотрю его, я смогу просмотреть правильное изображение фавикона в правильном формате.

Должен ли я настраивать пользовательский тип носителя или что-то в этом роде? Если да, то как мне это сделать для такого ресурса, как изображение (favicon)? Я предполагаю, что в этом нет необходимости и что по умолчанию возможен рендеринг значка.

EDIT Я забыл упомянуть, что я могу просматривать значок через HTTP, когда я просматриваю его локально (среда разработки), но когда я пытаюсь просмотреть его удаленно (производственная среда), значок не отображается, поскольку он должен.

EDIT 2 Мои правила перезаписи:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !favicon.ico$
    RewriteRule ^ index.php [QSA,L]
</IfModule>

Спасибо.

EDIT 3 Я настроил тестовое приложение Lithium: http://dev.koobi.co/favicon/

Единственное, что я изменил, это файл макета и config/bootstrap/libraries.php

Как видите, файл значка и для этого не загружается.


person Housni    schedule 16.05.2012    source источник
comment
Вы проверили журналы доступа/ошибок на удаленном сервере? Они могут дать больше информации о правах доступа и т. д. Похоже на проблему с конфигурацией.   -  person Oerd    schedule 17.05.2012
comment
Да, я уже сделал это. Когда я запрашиваю favicon.ico напрямую, я получаю 304, и это нормально. Я думаю, это связано с тем, как Lithium обслуживает файл .ico. Кажется, редактируя что-то, я мог изменить это поведение. Я не редактирую ядро, так что это что-то в моем приложении... Я просто не знаю, с чего начать отладку, чтобы решить эту проблему.   -  person Housni    schedule 17.05.2012
comment
HTTP 304 означает «Не изменено», попробуйте выполнить полное обновление или использовать окно инкогнито/приватного просмотра для загрузки страницы, а затем снова проверьте журналы для этого единственного запроса.   -  person Oerd    schedule 17.05.2012
comment
Сделано все это :) Хотя без изменений все в порядке. Это ожидаемо, нет? Любопытно, что это происходит только дистанционно. Я предположил, что это проблема среды, но я установил среду production в config/bootstrap/action.php (локально), и она работала нормально... так странно.   -  person Housni    schedule 17.05.2012
comment
304 нормально, но дальше не идет :) 1) проверяем (ls -la) права доступа к файлу favicon.ico. http-сервер может его прочитать? 2) как ваше производство .htaccess переписывает URL-адреса для favicon.ico?   -  person Oerd    schedule 17.05.2012
comment
Как я упоминал в своем исходном посте, я могу загрузить файл через HTTP, поэтому разрешения в порядке. Правила перезаписи также кажутся хорошими, они такие же, как я использую локально. Я тоже добавлю их в свой пост.   -  person Housni    schedule 17.05.2012
comment
Хусни: Я прочитал ваш оригинальный пост. Если ваш wget получает файл 200 OK, но нулевой длины, то он вообще не загружается через HTTP :)   -  person Oerd    schedule 17.05.2012
comment
Итак, файл сохранен как favicon.ico. Если бы это была проблема с разрешением, разве не было бы сказано, что файл не существует? Мне кажется, что файл обслуживается, но не так, как я пытаюсь понять.   -  person Housni    schedule 17.05.2012
comment
что, если apache имеет доступ для чтения к каталогу, но не к файлу? Он будет указывать файл как находящийся там, но не сможет его обслужить ... это то, на что я указывал в своем первом комментарии. Попробуйте набрать ls -la в оболочке, не помешает :)   -  person Oerd    schedule 17.05.2012
comment
Извините, Орд, я должен был упомянуть, что уже сделал это в начале. Право собственности и разрешения для фавикона такие же, как и для файлов CSS (0644). Я установил свежее приложение Lithium: dev.koobi.co/favicon favicon.ico здесь тоже не работает.   -  person Housni    schedule 17.05.2012


Ответы (2)


Нет ничего особенного, что вам нужно сделать. Дважды проверьте, что действительный favicon.ico доступен в каталоге webroot/. Lithium поставляется с фавиконкой, которую вы можете использовать.

person Mehdi Lahmam B.    schedule 16.05.2012
comment
Фавикон действующий. Как я упоминал в своем посте, если я скачаю значок, я смогу его просмотреть. Но через HTTP изображение кажется битым. Кроме того, я забыл упомянуть, что я могу просматривать значок через HTTP локально (среда разработки), но не удаленно (среда производства). Я отредактирую свой пост и добавлю эту информацию. - person Housni; 17.05.2012
comment
Какой хороший способ отладить это? С чего начать? - person Housni; 17.05.2012

Оказывается, это была проблема с Hostgator. Литий работал отлично. Судя по всему, правила Hostgators Apache не позволяют динамически отображать значки.

person Housni    schedule 18.05.2012