CodeIgniter и Google Custom Search Engine

Обнаружил что на сайтах, движок которых написан на CodeIgniter, с недавних пор перестал работать поиск по сайтам от google. Оказалось что дело в URL страницы, которая должна содержать результаты поиска.

Выглядит она примерно так:

http://my.site/search?cx=partner-pub-xxxxxxxxxxxxxxxx:eoor7latywp&cof=FORID:11&ie=UTF-8&q=query&sa=Search

Однако вместо контроллера search показывается страница с ошибкой 404.

Проблема решается следующим образом.

В конфиге config.php изменяем разрешенные символы в URL (если вы еще до сих пор это не сделали):

$config['permitted_uri_chars'] = '?A-Za-zА-Яа-я=\s&0-9~%\.:_-';

И делаем расширение для системной библиотеки CI Router:

class MY_Router extends CI_Router{

   function __construct()
   {
      parent::CI_Router();
   }

   function _validate_request($segments)
   {
       if (substr($segments[0],0,3) == 'cx=') {
           return array('search');
       }

       return parent::_validate_request($segments);
   }

}

Все, мне помогло. :)


Комментарии

Оставить комментарий

Ответ на CodeIgniter и Google Custom Search Engine