【问题标题】:Codeigniter regexp routingCodeigniter 正则表达式路由
【发布时间】:2014-04-14 22:10:47
【问题描述】:

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

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

在 .htaccess 中

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

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

此代码不起作用。如果我尝试只使用 routes.php 或只使用 .htaccess,它也不起作用。 我怎样才能让它发挥作用?

【问题讨论】:

  • 检查我的回答是否符合您的需求

标签: php regex .htaccess codeigniter


【解决方案1】:

我认为您的 htaccess 正则表达式规则写错了。您不需要将其编写为 PHP 正则表达式规则,请尝试在 htaccess 中不使用斜线的情况下重写它:

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

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

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

因此,您无需使用routes.php 再次修改您要调用另一个控制器的 apache url。

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 2012-06-28
    • 2010-12-30
    • 2013-05-07
    • 2012-08-08
    • 1970-01-01
    • 2011-01-24
    相关资源
    最近更新 更多