CodeIgniter 3.0の$config['uri_protocol']とURIセグメントの値
あまり問題になることはないと思いますが、設定によりURIセグメントの値が少々変わります。
具体的には、$config['uri_protocol']の設定によって、URIセグメントの値がURLエンコードされたままかデコードされた値か変わります。
これは、config/config.phpに以下のように記載されています。
WARNING: If you set this to 'PATH_INFO', URIs will always be URL-decoded!
このように値が変わるのは、CodeIgniterが対応する$_SERVER変数の値をそのまま使っているためです。デフォルトはREQUEST_URIです。
検証
controllers/Sample.php
<?php
class Sample extends CI_Controller
{
    public function index($arg = 'default')
    {
        echo html_escape($arg);
    }
}
http://localhost:8000/sample/index/%3Cs%3Eにアクセスすると、
- REQUEST_URIの場合は- %3Cs%3E
- PATH_INFOの場合は「The URI you submitted has disallowed characters.」
になります。
The URI you submitted has disallowed characters.になるのは、デコードされた値にCodeIgniterの「URIセキュリティ」仕様により許可されない文字列が含まれるからです。
Date: 2016/03/31



![徹底攻略PHP5技術者認定[上級]試験問題集  [PJ0-200]対応 徹底攻略PHP5技術者認定[上級]試験問題集  [PJ0-200]対応](http://tatsu-zine.com/images/books/164/cover_s.jpg)

