php - Codeigniter:将所有与 Controller 名称不匹配的请求发送到默认 Controller

标签 php model-view-controller codeigniter url-routing codeigniter-url

我正在从事一个涉及两种 URL 的项目,一种遵循标准 CI 模式

http://fancysite.com/controller/

另一个提出了以下方案:

http://fancysite.com/category

我希望第二个以 category 作为参数调用默认 Controller 的 handlecategory(或类似的东西)函数。

如果您还可以告诉我如何让像 http://place.fancysite.com/ 这样的 URL,那就太好了如果该 URL 后面没有类别,则调用仅将 place 作为参数传递的相同函数,或者如果是,则同时传递 placecategory

附加数据:我已经知道所有 Controller 的名称、地点、类别。

最佳答案

您可以使用 codeigniter 的 URI routing为了实现这一点 -

在路由文件的末尾插入这个 -

$route[':any'] = 'path of the default controller';

所有其他路由都应该放在上层代码之上。

假设 codeigniter 遇到的 URL 是 -

http://fancysite.com/category

所以首先 codeigniter 将搜索是否有名为 category 的 Controller 。 如果没有得到,那么它将检查路由文件以检查是否存在 像这样指定的任何路线 -

$route['category/:any'] = 'actual path';

如果在这种情况下没有指定这样的路由,codeigniter 将通过这个 请求您在最后一行中提到的默认 Controller 的路径 路线。

即使链接包含子域,请求也无所谓 相同的默认 Controller 。

现在您可以为子域处理或其他任何内容插入逻辑 在默认 Controller 中。

您甚至可以在我们的 url 示例中获取参数 'category' 这是 在 URL 中使用 codeigniters URI辅助类如下 -

$this->uri->segment(1);

关于php - Codeigniter:将所有与 Controller 名称不匹配的请求发送到默认 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4507676/

相关文章:

php - 在 PHP 中包含文件时可以使用 $_GET 变量吗?有可能吗,甚至来自 AJAX 调用?

mysql - 仅当列值低于 100 时才增加

php - 通过 CURL (php) 在 twilio 通知 API 中发送批量消息

php - 我正在显示多维数组的值。正在显示这些值,但我收到未定义偏移量的通知

javascript - PHP服务器只接受部分图片,跨域

sql-server - VBScript/ASP 经典

ruby-on-rails - Rails 5.0 - 如何在不使用 best_in_place gem 的情况下实现就地编辑

php - Zend Framework 函数不是 Controller 中的操作

php - 找不到 CodeIgniter CI_Controller

php - 让我的导航菜单与 CodeIgniter 一起使用