【问题标题】:Rewrite url of different pages to the same url in codeigniter在codeigniter中将不同页面的url重写为相同的url
【发布时间】:2017-06-13 06:22:14
【问题描述】:

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

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

【问题讨论】:

  • routes.php 中有什么内容?
  • 目前这是写在路由 $route['(:any)'] = 'controller-name/services/$1'; $route['products/(:any)'] = '控制器名称/products/$1';当我更改 "$route['products/(:any)'] = 'controller-name/products/$1';" to $route['(:any)'] = 'controller-name/products/$1';它给出了错误...

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


【解决方案1】:

首先,通配符路由必须在末尾​​p>

$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 是服务还是产品。因此,如果您在插入数据或插入making-powerplant 上进行了所有操作,以避免将服务和产品的标题加倍,那么现在您的应用程序应该查询这两个表。首先它应该查询服务表以查看是否有类似的标题。如果在 services 表中没有找到 title,应用程序需要查询 products 表。那将是冗长的应用程序和代码设计,因为在大多数情况下,您正在进行不需要的查询。 但这是您从一个 URI 段检查两个表或两个源的唯一方法。 我会坚持使用/services/service-1/products/product-1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多