我想在codeigniter中重写网址
对于我想要从给定网址
更改的产品页面www.example.com/services/service-name
要
www.example.com/service-name
对于我想要从给定URL更改的服务页面
www.example.com/products/product-name
要
www.example.com/product-name
但链接不起作用。它不区分产品和服务网址。令人感到困惑的是,网址是否与产品或服务有关。应该提取哪个特定页面。?
答案 0 :(得分:0)
首先,通配符路径必须在最后
$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
。