我想为我的产品创建更多SEO友好的URL,这些URL存储在数据库中。
如何从URL获取ProductName?
例如:
http://domain.com/ProductName
ProductName不是Controller。我需要从控制器验证ProductName并显示它。
答案 0 :(得分:4)
就个人而言,我会创建一个名为products的控制器,它接受一个参数来从数据库中查找产品:
class Products extends CI_Controller
{
public function index($productname)
{
$data['product'] = $this->db->get_where('products', array('urlname' => $product))->row_array();
// other functionality here and view loading
}
}
然后为此方案添加路由(config / routes.php):
$route['other/routes/first'] = "their/correct/controller/$1";
$route['/(:any)'] = "/products/index/$1";
自从我使用CI以来已经有一段时间了,但这应该有助于指出我希望的正确方向。
答案 1 :(得分:1)
您可以在routes.php中添加路由规则 将请求重定向到产品控制器
$route['(:any)'] = "product/$1";
在您的产品控制器中,从URI细分中获取产品名称
$product_name = $this->uri->segment(2);
答案 2 :(得分:0)
您可以使用URI Routing (Routing Rules)。
路由规则在application / config / routes.php文件中定义。在其中,您将看到一个名为$ route的数组,它允许您指定自己的路由条件。可以使用通配符或正则表达式
指定路由$route['/(:any)'] = "/products/index/$1";
此示例将导致:http://www.example.com/MyProductName/加载产品类,并将名称作为参数。
答案 3 :(得分:-3)
您可以使用CI路线来实现此目的
编辑Application / config / routes.php
$route['/(:any)'] = "/products/index/$1";