我正在从事一个涉及两种 URL 的项目,一种遵循标准 CI 模式
http://fancysite.com/controller/
另一个提出了以下方案:
http://fancysite.com/category
我希望第二个以 category
作为参数调用默认 Controller 的 handlecategory
(或类似的东西)函数。
如果您还可以告诉我如何让像 http://place.fancysite.com/ 这样的 URL,那就太好了如果该 URL 后面没有类别,则调用仅将 place
作为参数传递的相同函数,或者如果是,则同时传递 place
和 category
。
附加数据:我已经知道所有 Controller 的名称、地点、类别。
最佳答案
您可以使用 codeigniter 的 URI routing为了实现这一点 -
在路由文件的末尾插入这个 -
$route[':any'] = 'path of the default controller';
所有其他路由都应该放在上层代码之上。
假设 codeigniter 遇到的 URL 是 -
所以首先 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/