Вот как я это делаю:
У меня следующая структура каталогов:
- project_name
- application
- public
- index.php
- js
- css
- img
- compressed_assets
- etc
- sparks
- system
- tmp
- tools
Мой Apache DocumentRoot имеет вид ... / имя_проекта / public
В этомКстати, Apache просто обслуживает публичные активы и index.php (который является шлюзом для CodeIgniter).
Мне не нужно ничего скрывать с помощью .htaccess, и я, если я ошибочно удаляю .htaccess, нет открытых данных.
Я мог бы даже поместить папку css и js на один уровень вниз(но я этого не делаю, потому что обслуживаю несжатые активы в некоторых средах (в первую очередь, в разработке)).
В теме:
index.php обычно определяет пути к системе и приложению с относительным путем как:следуйте
$system_path = 'system'; //index.php line 82
$system_path = 'system'; //index.php line 97
Но я предпочитаю использовать абсолютные пути, поэтому у меня есть это:
define('ROOTPATH', dirname(dirname(__FILE__)));
$system_path = ROOTPATH.'/system';
$application_folder = ROOTPATH.'/application';
И внутри constants.php
define('SPARKPATH',ROOTPATH .'/sparks/');
PS: простообратите внимание, что путь искр не соответствует соглашению CI и имеет косую черту.