The CodeIgniter routing system translates your url to define controller, action and parameters as keys/values. It checks if the value of a key has permitted characters, and you can configure this with the $config['permitted_uri_chars']
, but the error message you get is about the key itself not about its value. The $config['permitted_uri_chars']
doesn't help you to allow the @ symbol in this case. You will find the function function _clean_input_keys($str)
that checks the keys in system/core/input.php. The % character is not allowed so '%40' will not pass:
if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
The only way around this in your case is to avoid this character (maybe translating it) in key parameters.