2

我有一个有多种语言的网站。对于我的新闻页面,我有两条规则将分页变量路由到我的控制器。一种用于所有语言(en、ct、cs、kr),一种用于默认语言。

路由.php

$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';

我的正则表达式在某个地方出错了吗?

4

1 回答 1

3

That's because in your first rule, you're capturing 2 segments of the URL. The first one is the language (e.g. en), and the second one is the id (or page number). So, in your first rule you should instead use $2 instead of $1.

$route['^(en|ct|cs|kr)/news/page/(:num)'] = 'news/index/$2';
于 2012-10-03T02:10:20.057 回答