Что-то не могу понять следующего.
Для фреймверков CodeIgniter и Kohana предлагают использ-овать следующую директиву в .htaccess:
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
Она вроде как нужна для того, чтобы преобразовывать урлы из вида:
http://localhost/modules
в вид
http://localhost/index.php/modules
Однако у меня несколько вопросов о том, как работает эта директива.
1. Что поступает на вход данной директивы? Полный запрошенный в браузере URL:
http://localhost/modules
или кусок URL-а, без имени хоста:
modules
2. Следующий вопрос вытекает из предыдущего. Почему первая директива имеет такой странны вид:
^(?:application|modules|system)\b.*
- Почему признак повторения "?" стоит после спецсимвола "("? Ведь он же должен стоять после какого-нибудь символа или метасимвола.
- Зачем там используется двоеточие ":"? Вроде как в регвырах нет такого управляющего символа, значит это просто символ ":". Но в строке вида "http://localhost/modules" нигде не может встретитьися последовательность символов ":application". Какой смысл в таком регвыре?