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);
}
}
Все, мне помогло. :)