将不同页面的URL重写为codeigniter中的同一URL

问题描述 投票:1回答:1

我想在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

但链接不起作用。它不区分产品和服务网址。令人感到困惑的是,网址是否与产品或服务有关。应该提取哪个特定页面。

php .htaccess url url-rewriting codeigniter-3
1个回答
0
投票

首先,通配符路由必须在最后

$route['some-route'] = 'ctrl/m/$1';
$route['some-other-route'] = 'ctrl/m2/$1';
...
$route['(:any)'] = 'ctrl/m3/$1';

because

路由将按照定义的顺序运行。较高的路线始终优先于较低的路线。

其次,在路线上有差异是很好的方法,因为

  1. 如果您没有像/services//products/这样的细分,则需要注意插入不要在不同区域(即服务,产品)之间复制名称。
  2. 即使您在代码中检查了两个表,也确保您没有在服务和产品之间重复名称,您仍然需要在每次需要服务或产品时查询这两个表。

路由工作的方式是从URL获取值,应用程序将使用该值执行某些操作。如果你有路线

https://www.example.com/making-powerplant

应用程序不知道制造动力装置是服务还是产品。因此,如果您在插入数据或插入making-powerplant上创建了所有内容以避免将该标题从服务和产品中加倍,那么现在您的应用程序应该查询这两个表。首先,它应该查询服务表,看看是否有像那样的标题。如果在services表中找不到title,则应用程序需要查询products表。这将是冗长的应用程序和代码设计,因为在大多数情况下,您正在进行不需要的查询。但这只是你从一个URI段检查两个表或两个源的方法。我会坚持使用/services/service-1/products/product-1

© www.soinside.com 2019 - 2024. All rights reserved.