我想在codeigniter中重写url
对于产品页面,我想从给定的URL更改
www.example.com/services/service-name
至
www.example.com/service-name
对于我想要从给定URL更改的服务页面
www.example.com/products/product-name
至
www.example.com/product-name
但链接不起作用。它不区分产品和服务网址。令人感到困惑的是,网址是否与产品或服务有关。应该提取哪个特定页面。
首先,通配符路由必须在最后
$route['some-route'] = 'ctrl/m/$1';
$route['some-other-route'] = 'ctrl/m2/$1';
...
$route['(:any)'] = 'ctrl/m3/$1';
路由将按照定义的顺序运行。较高的路线始终优先于较低的路线。
其次,在路线上有差异是很好的方法,因为
/services/
或/products/
这样的细分,则需要注意插入不要在不同区域(即服务,产品)之间复制名称。路由工作的方式是从URL获取值,应用程序将使用该值执行某些操作。如果你有路线
https://www.example.com/making-powerplant
应用程序不知道制造动力装置是服务还是产品。因此,如果您在插入数据或插入making-powerplant
上创建了所有内容以避免将该标题从服务和产品中加倍,那么现在您的应用程序应该查询这两个表。首先,它应该查询服务表,看看是否有像那样的标题。如果在services表中找不到title,则应用程序需要查询products表。这将是冗长的应用程序和代码设计,因为在大多数情况下,您正在进行不需要的查询。但这只是你从一个URI段检查两个表或两个源的方法。我会坚持使用/services/service-1
和/products/product-1
。