私はCodeingniterでこのルートを持っています
$route['([en|fr|es|it]+)/(.+)'] = 'My_Controller/index/$1/$2';
ここで、最初の引数は言語 ID で、2 番目の引数は一意の ID です。ID には、次のような形式でスラッシュが含まれています。
item/34/public
something/else
name/for/this/can/be/12345
ID のスラッシュの数は 0 から (誰も知らない) までなので、実際にはこのハックで My-Controller で ID を取得しています:
public function index($lang,$id)
{
$hack_id = $this->uri->segment(3);
if ($this->uri->segment(4)) {
$hack_id .= "/".$this->uri->segment(4);
}
if ($this->uri->segment(5)) {
$hack_id .= "/".$this->uri->segment(5);
}
/*...and so go on if clauses, repeating and concatenating ...*/
/* and finally passing the hack_id data to view */
}
それは機能しますが、それは奇妙な解決策だと思います(私は実際にはIDを渡していません)。それをより適切に行う方法、よりスマートな解決策(おそらくルートで?)でなければなりません。
どんな助けや手がかりも大歓迎です...