Почему мой запрос `favicon.ico` не работает? - PullRequest
0 голосов
/ 06 мая 2011

У меня есть favicon.ico на моем сайте.

В HTML я указываю на его местоположение ...

<link rel="icon" href="/assets/images/layout/favicon.ico" type="image/x-icon" />

У меня это тоже есть в .htaccess.

# Redirect /favicon.ico requests
RewriteCond %{REQUEST_URI} !^assets/images/layout/favicon\.ico [NC]
RewriteCond %{REQUEST_URI} ^favicon\.(gif|ico|png|jpe?g)$ [NC]
RewriteRule ^(.*)$ assets/images/layout/favicon.ico [R=301,L]

... для перенаправления /favicon.ico запросов в другое место.

По какой-то причине каждый раз, когда я запрашиваю favicon.ico в своем браузере, я получаю 304 Not Modified ответ с соответствующими Etags и , по-видимому, пустое изображение, даже если /assets/images/layout/favicon.ico существует существует.

Example

У меня возникает та же проблема при попытке доступа к нему по полному пути.

Что здесь происходит? Что вызывает это 304?

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

Прежде всего, я бы предпочел поместить это правило в .htaccess так:

RewriteRule ^favicon\.(gif|ico|png|jpe?g)$ /assets/images/layout/favicon.ico [L,NC]

Тогда, если у вас есть это на вашей веб-странице:

<link rel="icon" href="/favicon.ico" type="image/x-icon" />

/favicon.ico будетбыть внутренне перенаправленным на /assets/images/layout/favicon.ico

Я проверил это в IE, Firefox и Chrome, и все 3 показывают это поведение, которое в первый раз (или после очистки кэша) я получаю 200 для favicon.ico, но после этого все браузеры кэшируют этот файл значков и не пытаются отправить другой запрос на сервер.С этой настройкой я не обнаружил никаких 304, происходящих в моем тестировании.

Мой журнал доступа:

Chrome

127.0.0.1 - - [05/May/2011:23:58:15 -0400] "GET /favicon.ico HTTP/1.1" 200 1150 "-" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Geck
o) Chrome/11.0.696.60 Safari/534.24"

IE

127.0.0.1 - - [06/May/2011:00:05:18 -0400] "GET /favicon.ico HTTP/1.1" 200 1150 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .
NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"

Firefox

127.0.0.1 - - [06/May/2011:00:07:33 -0400] "GET /favicon.ico HTTP/1.1" 200 1150 "-" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
0 голосов
/ 20 декабря 2017
<IfModule mod_rewrite.c>
RewriteRule ^favicon\.ico$ _/img/ico/favicon.ico [L]
RewriteRule ^apple-touch-icon\.png$ _/img/ico/apple-touch-icon.png [L]
RewriteRule ^apple-touch-icon-precomposed\.png$ _/img/ico/apple-touch-icon-precomposed.png [L]
RewriteRule ^apple-touch-icon-57x57-precomposed\.png$ _/img/ico/apple-touch-icon-57x57-precomposed.png [L]
RewriteRule ^apple-touch-icon-72x72-precomposed\.png$ _/img/ico/apple-touch-icon-72x72-precomposed.png [L]
RewriteRule ^apple-touch-icon-144x144-precomposed\.png$ _/img/ico/apple-touch-icon-144x144-precomposed.png [L]
RewriteRule ^apple-touch-icon-114x114-precomposed\.png$ _/img/ico/apple-touch-icon-114x114-precomposed.png [L]

...