3

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

http://fancysite.com/controller/

另一个提出以下方案:

http://fancysite.com/category

我希望第二个调用默认控制器的handlecategory(或类似的)函数category作为参数。

如果您还可以告诉我如何让诸如http://place.fancysite.com/place之类的 URL 调用相同的函数作为参数传递,如果没有类别跟随该 URL,或者两者兼而有之place,并且category如果它确实如此,那么额外的爱。

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

4

1 回答 1

6

您可以使用 codeigniter 的URI 路由来实现这一点 -

将此插入到您的路线文件的末尾 -

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

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

假设遇到的 URL codeigniter 是 -

http://fancysite.com/category

所以首先 codeigniter 将搜索是否有一个名为 category 的控制器。如果它没有得到,那么它将检查路由文件以检查是否有任何这样指定的路由 -

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

如果在这种情况下没有指定这样的路由,codeigniter 会将此请求传递给您在最后一行路由中提到的默认控制器的路径。

即使链接包含子域,请求将转到相同的默认控制器也没关系。

现在您可以在默认控制器中插入用于子域处理或其他任何内容的逻辑。

您甚至可以在我们的 url 示例中获取参数“category”,该示例位于使用 codeigniters URI帮助程序类的 URL 中,如下所示 -

$this->uri->segment(1);
于 2010-12-22T18:04:56.383 回答