我遇到像这样的路由问题:
$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,它也不会起作用。 我怎么能让它发挥作用?
答案 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网址。