Rails, favicon.ico не найден - PullRequest
       1

Rails, favicon.ico не найден

13 голосов
/ 23 апреля 2011

Это так странно, я получаю:

ActionController::RoutingError (No route matches "/favicon.ico")

но у меня есть favicon.ico в моем публичном каталоге ... есть идеи, как это решить? Nginx вообще не выдает ошибку.

Ответы [ 6 ]

12 голосов
/ 10 сентября 2012

Run

rake assets:precompile

затем установите

config.serve_static_assets = true

в config\environments\production.rb файле. Затем перезагрузите ваш сервер. Но я думаю rake assets:precompile не требуется.

11 голосов
/ 23 апреля 2011

Кажется, что nginx не обрабатывает ваши статические активы (поскольку этот запрос статического файла поступает в ActionController). Проверьте общедоступный корень в конфигурационном файле nginx nginx.conf. Вот пример с развертыванием Capistrano:

server {
  listen       80;
  root /var/www/my_project/current/public;
}

А вы используете favicon_link_tag помощник в своей голове :)?

10 голосов
/ 19 марта 2013

Если вы хотите оставить config.serve_static_assets = false, что рекомендуется, если у вас nginx или apache, вы можете указать nginx, чтобы он статически обслуживал файлы напрямую. Это особенно важно с точки зрения производительности, поскольку вы не хотите, чтобы рельсы обслуживали эти активы.

Ниже приведен пример, в котором nginx также корректно обслуживает каталог ресурсов:

server {
  listen       80;
  root /var/www/my_project/current/public;

  location / {
        proxy_pass              http://mysite;
        proxy_redirect              off;
        proxy_set_header X_FORWARDED_PROTO  https;
        proxy_set_header Host           $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        client_max_body_size        10m;
        client_body_buffer_size     128k;

        proxy_connect_timeout       90;
        proxy_send_timeout      90;
        proxy_read_timeout      90;

        proxy_buffer_size       4k;
        proxy_buffers           4 32k;
        proxy_busy_buffers_size     64k;
        proxy_temp_file_write_size  64k;
    }

    # static resource routing - both assets folder and favicon.ico
    location ~* ^/assets/|favicon.ico {
        # Per RFC2616 - 1 year maximum expiry
            # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
            expires 1y;
            add_header Cache-Control public;

            # Some browsers still send conditional-GET requests if there's a
            # Last-Modified header or an ETag header even if they haven't
            # reached the expiry date sent in the Expires header.
            add_header Last-Modified "";
            add_header ETag "";
            break;
      }
}
5 голосов
/ 25 ноября 2011

Убедитесь, что файл favicon.ico не пустой (размер байта> 0). По какой-то причине у меня был пустой файл favicon.ico, который вызывал ту же ошибку, даже если этот файл существовал.

1 голос
/ 08 октября 2012

Я столкнулся с той же проблемой, когда впервые клонировал код из репозитория git и запустил с RAILS_ENV=production. Поскольку в моем git-репозитории не было каталога assets, мне нужно было запустить rake assets:precompile.

Также я работал с рельсами s, поэтому config.serve_static_assets = true работал. Спасибо @ Jiemurat

1 голос
/ 23 апреля 2011

удалите знак косой черты перед favicon.ico и попробуйте использовать что-то вроде:

<link rel="shortcut icon" type="image/png" href="favicon.ico" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...