我有一个拥有多种语言的网站。对于我的新闻页面,我有两个规则将分页变量路由到我的控制器。一个用于所有语言(en,ct,cs,kr),另一个用于默认语言。
$route['^(en|ct|cs|kr)/news/page/(:num)'] = 'news/index/$1';
$route['news/page/(:num)'] = 'news/index/$1';
public function index($id)
{
echo $id;
}
路由正在访问新闻控制器,但$id
参数未传递给index()
方法。
如果我回显$id
它返回语言段而不是我期望的分页变量:
mysite.com/en/news/page/2 // $ id返回'en'。
mysite.com/kr/news/page/2 // $ id返回'kr'。
当我为每种语言单独写出路线时,它会起作用:
$ route ['en / news / page /(:num)'] ='news / index / $ 1';
我的正则表达式出错了吗?
答案 0 :(得分:2)
这是因为在您的第一条规则中,您正在捕获网址的两个部分。第一个是语言(例如en
),第二个是id
(或页码)。因此,在您的第一条规则中,您应该使用$2
而不是$1
。
$route['^(en|ct|cs|kr)/news/page/(:num)'] = 'news/index/$2';