codeigniter中的产品详细信息页面路由

Posted

技术标签:

【中文标题】codeigniter中的产品详细信息页面路由【英文标题】:product detail page routing in codeigniter 【发布时间】:2014-01-02 02:55:53 【问题描述】:

在我的本地站点中

http://localhost/giftsware/nl/products/details/2382

这是我的产品描述页面的浏览器网址 现在我想要更多用户友好的产品描述页面网址。我想把上面的 url 改成

http://localhost/giftsware/products/2382

我尝试通过添加将所有呼叫路由到详细信息

$route['products/(:any)'] = "nl/products/details/$1";

这是在 routes.php 文件中,但它给了我 404 错误。 可能是什么问题,我该如何解决?

这是我完整的路由文件代码

$route['(:any)/products/(:num)'] = "products/details/$2";
$route['default_controller'] = "pages";
$route['404_override'] = '';

$route['^en/admin/([a-zA-Z_-]+)/(:any)']    = '$1/admin/$2';
$route['^en/admin/(login|logout)']          = 'admin/$1';
$route['^en/admin/([a-zA-Z_-]+)']           = '$1/admin/index';
$route['^nl/admin/([a-zA-Z_-]+)/(:any)']    = '$1/admin/$2';
$route['^nl/admin/(login|logout)']          = 'admin/$1';
$route['^nl/admin/([a-zA-Z_-]+)']           = '$1/admin/index';
$route['admin']                         = 'admin'; 

$route['pages/(:any)'] = "pages/index/$1";


$route['^nl/(.+)$'] = "$1";
$route['^en/(.+)$'] = "$1";


$route['^nl$'] = $route['default_controller'];
$route['^en$'] = $route['default_controller'];

【问题讨论】:

您确定在某处没有冲突的路线吗?您的路由看起来是正确的,我看不出它有任何不工作的原因。 你能显示完整的 routes.php 文件吗?声明路由的顺序很重要,而且我经常不得不更改它,以免它们发生冲突 你有一个名为 nl 的类吗?你有一个名为 products 的方法吗? 【参考方案1】:

试试看

$route['^nl/products/details/(\d+)$'] = 'products/$1';

使用 .htaccess 文件

  Options +FollowSymLinks
      RewriteEngine On

      RewriteCond %SCRIPT_FILENAME !-d
      RewriteCond %SCRIPT_FILENAME !-f

      RewriteRule ^products/(\d+)*$ ./nl/products/details/$1

使用php

<?php
    #remove the directory path we don't want
    $request  = str_replace("nl/products/details", "products", $_SERVER['REQUEST_URI']);
  ?>

【讨论】:

以上是关于codeigniter中的产品详细信息页面路由的主要内容,如果未能解决你的问题,请参考以下文章

通过详细信息页面添加产品数量的问题

按 ID 获取数据详细信息 - CODEIGNITER

点击“产品详细信息”页面上的“添加到框”按钮后,网站会放大

如何在另一个页面获取数组详细信息

单击时Vue路由到详细信息组件

Magento 在 onclick 链接上的产品详细信息页面上打开描述选项卡