FAQ:Проблемы с подключаемыми клиентскими файлами

Материал из Wiki

Перейти к: навигация, поиск

Подключаемые клиентские файлы - это статические файлы, запрашиваемые браузером, такие как файлы стилей (.css), скрипты (.js), флеш-ролики (.swf), изображения (.gif, .jpg, .png) и т.д. Частая проблема, возникающая у новичков, - неправильная работа или отображение этих файлов, или просто их отсутствие.

Возможные причины

1. Отсутствие запрашиваемого файла на сервере или отсутствие прав на чтение

Проверьте наличие файла в соответствующей папке. Если сервер работает на ОС Linux - проверьте права на чтение (CHMOD), последняя цифра должна быть 4, 6 или 7 (например, 644 или 777).

2. Перенаправление запроса с помощью mod_rewrite

Codeigniter может использовать "дружественные" URL вида site.ru/catalog/ или site.ru/gallery/615. Это достигается с помощью модуля mod_rewrite, который настраивается в файле .htaccess. Образец файла .htaccess может отсутствовать в дистрибутиве Codeigniter, в инструкции он предлагается в виде

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Эти строки означают, что все запросы, первая часть которых отличается от index.php, images и robots.txt, будут перенаправлены на site.ru/index.php/строка_запроса. Пример: site.ru/css/main.css будет перенаправлен на site.ru/index.php/css/main.css и соответственно будет запрошен файл index.php, а вовсе не css/main.css.

Скорее всего вы разместите файлы .css, .js и .swf в специальной папке, например в /css, /scripts и т.д. Соответственно, если вы используете mod_rewrite для вашего сайта, вы должны включить эти пути в условие RewriteCond:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css|scripts)
RewriteRule ^(.*)$ /index.php/$1 [L]

При этом учитывайте регистр в названии папок.

Если вы не уверены в будущей организации папок и файлов вашего проекта, можно использовать более простое правило:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

Способы диагностики

  • Самый простой способ - откройте требуемый путь в браузере. Например, вы подозреваете, что не загружается файл /css/main.css. Наберите в адресной строке site.ru/css/main.css - и вы увидите, что "выдаёт" сервер.
  • Используйте HTTP-снифер. Этот способ удобен, если вы запрашиваете тот или иной файл XHR-запросом (Ajax), т.е. без перезагрузки страницы. При этом вы можете наблюдать переменные запросов и заголовки ответов (включая кодировку и код http-ответа). Рекомендуемый снифер - HTTP Analyzer.
Личные инструменты