Это потому, что это невозможно, позвольте мне объяснить.
- Удаление index.php по-прежнему отправляет все запросы в index.php / yadda / yadda, поэтому в запрошенном uri все еще есть index.php, даже если вы его не видите или не добавляете в URL.
- Перенаправление (инициируемое вторым правилом перезаписи) обнуляет раздел индекса, поэтому вы получите mysite.com/index.php/lowercase/
НО кроме всего этого RewriteMap может быть объявлен только в вашем файле Httpd.conf, вы бы объявили его там с помощью:
RewriteMap lc int:tolower
Тогда в вашем .htaccess файле используйте вашу переменную lc, но опять же только один из двух выиграет, а вы не можете иметь оба.
Вы получите либо строчный URL-адрес, либо сайт будет работать без использования index.php, потому что они всегда конфликтуют из-за характера каждого из них.
Действительно, единственный способ увидеть это происходит в php, вот так:
$this->load->helper('url');
$your_URL = uri_string();
preg_match_all('/[A-Z]/', $your_URL, $match) ;
$total_count = count($match [0]);
if($total_count > 0){
$new_line = strtolower($your_URL);
redirect($new_line);
}
Это я бы положил в основную конструкцию ваших классов, надеюсь, это поможет вам.