0

我有一个页面包含此类别 URL website.com/category/view/honda-red-car 我只想让它说http://website.com/honda-red-car no html 或 php 并摆脱URL 中的类别视图.. 这个网站是使用 CodeIgniter 框架完成的..

还有这个产品视图 URL website.com/product/details/13/honda-accord-red-car 我希望它是 website.com/honda-accord-red-car 请帮助!!!

我找不到关于我做错了什么的正确说明?

4

2 回答 2

2

查看用户指南的URI 路由部分。

如果您有一组要路由的具体 url,那么通过向其中添加规则,application/config/routes.php您应该能够实现您想要的。

如果您想要一些通用解决方案(任何 uri 段都可以是一个product/details页面),那么您可能需要将所有其他 url 显式添加到routes.php配置文件并设置一个包罗万象的规则以将其他所有内容路由到正确的控制器/方法。记住也要处理 404 url​​!

示例:
假设这/honda-red-car是一些特殊的东西,您只希望在内部重定向这个,您编写:

$routes['honda-red-car'] = 'product/details/13/honda-accord-red-car';

如果您想概括以honda-您所做的字符串开头的所有内容:

$routes['(honda-.*)'] = 'product/details_by_slug/$1'; // imaginary endpoint

这些规则在preg_replace()调用中使用键作为模式,值作为替换字符串,因此()用于捕获组,$1用于放置捕获部分。

小心这些模式,如果它们太笼统,他们可能会捕捉到每个请求,所以:

$routes['(.*)'] = 'product/details_by_slug/$1';

虽然它当然也适用于任何汽车名称,suzuki-swift-car但它也会捕获普通的根 URL 或product/details/42请求。

这些规则是从上到下评估的,因此从顶部的特定规则开始,将一般规则留在文件末尾。

于 2013-02-13T07:47:35.370 回答
2

在 Routes.php 中,您需要像这样创建一个

$route['mycar'] = "controller_name/function_name";

因此,对于您的示例,它将是:

$route['honda-red-car] = "category/view/honda-red-car";

于 2013-02-13T16:40:26.640 回答