Skip to main content

Настраиваем Codeigniter

ЧПУ или человеко-понятные урлы

ЧПУ - это урлы вроде /article/view/123 . Глядя на такой урл понятно, что на странице с таким урл показывают статью с ид 123.
Для того, чтобы включить ЧПУ в кодеигнитере, надо в корень веб сайта ('www') поместить файл '.htaccess' следующего содержания:

 
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (\.gif|\.png|\.jpg|\.jpeg|\.ico)$ /img/spacer.gif [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (\.js|\.css)$ /empty.htm [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [QSA,L]

php_value default_charset UTF-8

Рассмотрим поподробнее этот файл. На 1й строке мы включаем реврайт энджин (специальный модуль апача по хитрому трактующий урлы).
Строки 9-11 - самые главные - в них мы объявляем, что если нет такого файла (9 строка) и если нет такой директрии (10) строка, как указано в урле, то запрос к апачу мы скармливаем файлу 'index.php', передавая запрашиваемый урл этому файлу в качестве параметра. В принципе строк 1 и 9-10 достаточно, чтобы запустить ЧПУ.

Тем не менее, мы добавили несколько строчек еще. Дело в том, что при такой конфигурации '.htaccess' все запросы к несуществующим файлам идут к 'index.php'. Чем это плохо? Предположим, что главная страница вашего сайта портала выводит много разной информации - ссылки на последние статьи и новости, кто сейчас на сайте, новички сайта и т.д., то есть делает много работы по созданию этой страницы. И получается, что при обращении к несуществующему файлу каждый раз запрашивается эта ТЯЖЕЛАЯ страница. Лишняя и ненужная нагрузка на сайт. Можно ли этого избежать?

Да можно, именно для этого и служат 3 и 4, 5 и 6 строки. 3 и 4 при обращении к несуществующей картинке выдают пустую картинку. 5 и 6 при обращении к несуществующему файлу жаваскрипт или css выдают заранее подготовленный пустой файл. Правда это решение накладывает на нас ограничения, теперь мы не сможем отдавать урлы с расширениями картинок или жаваскрипта с помощью Codeigniter. Не очень то и хотелось.

Строка 13 задает кодировку отдаваемую в заголовке php. Это можно настроить для всех сайтов в php.ini , но мы для примера сделаем это в файле '.htaccess'.
Почему надо делать проекты в кодировке UTF-8? В этой кодировке могут работать все, так что вы сможете продать свои наработки и чехам и китайцам, проблем с отображением символов не будет.

Добавим файлы

Нам надо добавить файлы '/img/spacer.gif' и '/empty.htm' в наш проект, иначе при каждом обращении к несуществующей картинке, будет искаться несуществующая картинка '/img/spacer.gif', а потом еще и еще раз, пока не закончится число разрешенных реврайтов и запрос не закончится ошибкой.

Соглашения о путях

'/img/spacer.gif' означает, что файл лежит в директории 'img' в веб директории сайта. '/empty.htm' означает, что файл 'empty.htm' лежит в корне сайта (веб пространства, директории 'www'). Пустой файл htm создать не сложно, с картинкой чуть сложнее, если вы не знаете как, возьмите то, что у меня в проекте.

Мы готовы разрабатывать сайт на php, mysql, codeigniter.