将不同页面的网址重写为codeigniter

时间:2017-06-13 06:22:15

标签: php .htaccess url url-rewriting codeigniter-3

我想在codeigniter中重写网址

对于我想要从给定网址

更改的产品页面
www.example.com/services/service-name

www.example.com/service-name

对于我想要从给定URL更改的服务页面

www.example.com/products/product-name

www.example.com/product-name

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

1 个答案:

答案 0 :(得分:0)

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

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

because

  

路线将按照定义的顺序运行。较高的路线总是优先于较低的路线。

其次,路线不同是一个很好的方法,因为

  1. 如果您没有/services//products/这样的细分,则需要注意不要在不同区域(即服务,产品)之间复制名称。
  2. 即使您在代码中检查了两个表,也确保您在服务和产品之间没有重复名称,但每次需要服务或产品时,您仍需要查询这两个表。
  3. 路由工作的方式是从URL获取值,应用程序将使用该值执行某些操作。如果你有路线

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

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