Я предполагаю, что ваш файл .htaccess неправильно настроен на , а не запросы на перезапись файлов изображений.Поскольку вы работаете с CodeIgniter не от корня сервера (т. Е. /ignite/
), стандартный файл CI .htaccess, вероятно, не соответствует папке images, чтобы не переписать его так, чтобы он указывал на index.php.
Что находится в вашем файле .htaccess?Есть ли директива RewriteBase?Посмотрите запись CI mod_rewrite wiki , чтобы узнать, сможете ли вы получить какие-либо подсказки.Или просто попробуйте
RewriteBase /ignite/
... сразу после включения RewriteEngine и посмотрите, что произойдет.
Если это поможет понять, что происходит, стандартный CI .htaccess выглядит примерно так:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|table-images|js|robots\.txt|css)
RewriteRule ^(.*)$ /index.php/$1 [L]
Основным событием является RewriteRule, который выбрасывает все, что входит в конец index.php.Это означает, что вам не нужно иметь index.php
в начале ваших URL-адресов CI, то есть вместо http://www.example.com/index.php/controller/method
вы можете просто написать http://www.example.com/controller/method
.
. Это делается, принимая всеиз пути (^(.*)$
) и переписав его в конец index.php.Скобки в шаблоне ^(.*)$
являются группой.Каждой группе присваивается номер, который можно использовать для «обратной ссылки» в другом месте, используя $ n.В этом случае есть только одна группа, и вы можете ссылаться на нее в другом месте как $1
.Итак:
RewriteRule ^(.*)$ /index.php/$1 [L]
Означает "захватить все (. *) От начала (^) до конца ($) пути и назвать его $ 1 (потому что это первое выражение в скобках). Затемпереписать путь как /index.php/$1 ", т.е. поместить все в конец index.php.
Теперь, это нормально для большинства вещей - для всех контроллеров и методов - но если выу вас есть статические файлы, которые вы хотите обслуживать, например изображения, вы не хотите проходить через ваши контроллеры, то есть ваш index.php.Это гораздо быстрее, просто обслужить их, даже не пройдя через PHP.
Вот тут и появляется RewriteCond
. В этом случае:
RewriteCond $1 !^(index\.php|images|table-images|js|robots\.txt|css)
... что мы 'повторяю: «запускайте следующий RewriteRule только в том случае, если первая группа в его шаблоне (снова $1
) не (!
) начинается (^
) со следующего списка вещей: "index.php", "images", "table-images", "js", "robots.txt" или "css".
И вот как изображения обслуживаются - вместо URL-адресовбудучи переписанным RewriteRule, как если бы был вызов к контроллеру, как и все, что проходит через index.php, они игнорируются, потому что RewriteCond
фактически говорит: «Не беспокойтесь о переписывании любых путей, начинающихся с« изображений »»и затем обслуживается Apache в обычном режиме.
Надеюсь, это поможет вам разобраться с тем, что происходит в .htaccess.