Codeigniter 3.0:我如何定义这些路线?

时间:2016-05-31 16:28:16

标签: php codeigniter routes codeigniter-3

我在CodeIgniter路由方面遇到了一些麻烦: 我想构建一个显示某些产品的网站,并且需要按照以下规则构建URL:

http://localhost/testsite/category-name/product-name/id.htmlhttp://localhost/testsite/pro-id/category-name/sub-category-name1/.../product-name.html, 使用" category-name"," sub-category-name1"," sub-category-name2" ...," product-name&#34 ;和" id"从数据库中加载动态。

如何为此配置路由值? 我已经尝试了一些案例,但它没有工作:

$route['pro-(:num)/(:any).html'] = 'product/detail?pid=$1';
$route['(:any)/(:num)'] = 'product/detail?pid=$1';

非常感谢任何帮助!

感谢@Bira的支持,但问题仍然存在:)

以下是我的' routes.php'

的内容
$route['default_controller'] = 'product';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['home.html'] = 'product/index';
$route['pro-(:num)/(.+).html'] = 'product/detail?pid=$1';
$route['(:any)/(:any)/(:num).html'] = 'product/detail?pid=$3';

.htaccess的内容

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^home.html  index.php/product/index
RewriteRule ^pro-([0-9]+)/(.*).html  index.php/product/detail?pid=$1
RewriteRule ^([0-9A-Za-z]+)/([0-9A-Za-z]+)/([0-9]+).html  index.php/product/detail?pid=$3

并且......只有一个网址正在运行" http://localhost/testsite/home.html" (第一条规则)。其他规则将返回错误:404找不到页面(例如:" http://localhost/testsite/pro-3/category-name/product-name.html")

这是我的测试控制器类:

class Product extends CI_Controller {
    public function index()
    {
        $this->load->view('products');
    }
    public function detail()
    {
        $pid = $_GET['pid'];
        $data['pid'] = $pid;
        $this->load->view('product_detail', $data);
    }
}

非常感谢您的支持,我只是CI上的新手:)

2 个答案:

答案 0 :(得分:1)

确保已启用Apache .htaccess。 确保启用了Apache模块mod_rewrite。

答案 1 :(得分:1)

从路线规则中删除pid=$1。它会工作。见下面的代码。

$route['pro-(:num)/(:any).html'] = 'product/detail';
$route['(:any)/(:num)'] = 'product/detail';