私はnginxのドキュメントを読んでいましたが、この正規表現でこの「(?U)」が何をしているのかわかりません。
http://wiki.nginx.org/HttpFastcgiModule#fastcgi_split_path_info
これが例です。スクリプトshow.phpは、引数として文字列article/0001を受け取ります。次の構成は、パス分割を適切に処理します。
location ~ ^.+\.php {
(...)
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
(...)
}
/show.php/article/0001をリクエストすると、SCRIPT_FILENAMEが/path/to/php/show.phpに設定され、PATH_INFOが/ article/0001に設定されます。
この正規表現は十分ではありませんか?
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
ありがとう