【问题标题】:Remove Controller from every url in codeigniter从 codeigniter 中的每个 url 中删除 Controller
【发布时间】:2017-01-20 22:38:52
【问题描述】:

我到处搜索,但找不到合适的结果。我想从网站的每个 url 中删除 controller_name。我的 codeigniter 安装在域的子文件夹中。

例如:

www.site_name.com/subfolder/controller_name/any_method_name

我只有一个控制器,我从中调用所有方法。

我了解到我必须对路线进行一些更改,但我认为这仅适用于一个 url。那么,如何删除每个 url。

【问题讨论】:

标签: php codeigniter routing


【解决方案1】:

不确定这是否有效,但您可以尝试将其添加到您的application\config\routes.php

$route['([a-z]+)'] = 'controller_name/$1';

文档https://www.codeigniter.com/userguide3/general/routing.html#regular-expressions

【讨论】:

  • 不,它不工作,但我认为这可能是因为我已经在子文件夹中安装了我的 codeigniter。
  • 另一件事是,它是否适用于从其他页面重定向的 url?
  • Pratik Bhalodiya 的答案应该适合您的情况
【解决方案2】:

在这里,我正在回答我自己的问题。我已经通过以下解决方案解决了这个问题。

假设,我的控制器名称是users,那么答案是:

$route['^(:any)(/:any)?$'] = "users/$0";

这会从网站的每个 url 中删除控制器名称。

【讨论】:

  • 当站点在子域或子文件夹中时可能会出现问题
【解决方案3】:

Codeigniter 支持两种路由规则

1)通配符

2)正则表达式

我更喜欢通配符

在路线中放置这个

$route['login/(:any)'] = "v1/login";

第一个段为“login”的 URL,第二个段中的任何内容都将重新映射到“v1”类和“login”方法。

表示您更改 www.abc.com/login 而不是 www.abc.com/v1/login

在此处https://www.codeigniter.com/userguide3/general/routing.html .......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2014-10-28
    • 2012-06-15
    • 2012-09-21
    • 2011-10-12
    相关资源
    最近更新 更多