Codeigniter正则表达式路由

时间:2014-03-11 10:45:33

标签: php regex .htaccess codeigniter

我遇到像这样的路由问题:

$route['(/[a-z]{2}/)'] = 'locale/somepage';

在.htaccess

RewriteEngine on
RewriteBase /
RewriteRule ^(/[a-z]{2}/)$ /index.php/locale/somepage

我需要替换url的第一部分(类或控制器)并调用另一个控制器。例如,我需要url,因为 / en / page 会调用控制器区域设置,但不需要更改网址。

此代码无效。如果我尝试仅使用routes.php或仅使用.htaccess,它也不会起作用。 我怎么能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

我认为你写的htaccess regexp规则错了。您不需要将其写为PHP regexp规则,尝试在没有htaccess中的斜杠的情况下重写它:

RewriteRule ^([a-z]{2})/page$ /index.php/locale/somepage

这会将任何http://mypage.com/en/page发送到index.php / locale / somepage。

根据该规则,CI将收到网址index.php/locale/somepage。此时,CI将转到routes.php,并将检查是否有任何规则可以调用特定控制器。如果没有,它将尝试转到名为locale的控制器,以加载名为somepage的方法。

因此,您不需要使用routes.php再次修改您要接听另一个控制器的apache网址。