从网址中删除控制器名称。 Codeigniter

时间:2018-10-18 01:52:24

标签: codeigniter

有人可以帮我这个忙吗?我想从网址中删除控制器名称

www.site-name.com/controller_name/controller_functions/controller_arguments

对此

www.site-name.com/controller_arguments

例如:

www.site-name.com/blog/display/blog-title

对此:

www.site-name.com/blog-title

下面是我的控制器类

 class Blog extends CI_Controller {

       public function index() {

         $data['blogs_data'] = $this->Blog_model->get_blogs();

         $data['main_view'] = "blog/blog_layout";

         $this->load->view('layouts/main', $data);
      }

       public function blog_display($page_url) {
        $data['blog_data'] = $this->Blog_model->get_blog($page_url);

        $data['main_view'] = "blog/blog_detail_layout";

        $this->load->view('layouts/main', $data);
       }
 }

您可以从我的控制器中看到要显示博客的网站URL,就像这样www.website-name.com/blog/blog_display/($page_url)<==不管$ page_url是什么。现在,我想要的是这样的www.website-name.com/($page_url)<=,直接进入$ page_url。

谢谢

3 个答案:

答案 0 :(得分:0)

转到application->config->routes.php

然后,您可以将“博客/显示/博客标题”的路由设置为“博客标题”

将以下行添加到您的route.php文件中

$route['blog-title'] = 'blog/display/blog-title';

然后可以将“博客/显示/博客标题”替换为“博客标题”。

答案 1 :(得分:0)

在routes.php文件中定义路由。

route['controller_arguments']='controller_name/controller_functions';

在哪个onclick上显示此url。在此定义。

<a href="<?php echo base_url(); ?>controller_arguments">
                            </a>

答案 2 :(得分:0)

我想您的子弹是生成的,所以您不能只将所有的子弹写入路由。

在特定情况下,您的路线中需要这样的东西:

$route['(:any)] = 'blog/display/$1';

请记住,您的路线是从上到下使用的。因此,如果您将这条路线作为第一条路线,则网站的其余部分可能无法正常工作。

因此,在整个博客结构中,您可能需要以下内容:

$route[''] = 'blog/index'; // For first page without pagination
$route['(:num)] = 'blog/index/$1'; // Blog article pagination (for second page and all other pages)
$route['(:any)] = 'blog/display/$1'; // Blog article detail

为了避免将来使用仅作为(:any)参数的路由而出现问题,您可能希望在该博客详细信息文章中添加一个额外的细分。

像这样:

$route['detail/(:any)] = 'blog/display/$1'; // Blog article detail

有关此主题的更多信息,请快速查看此处的文档:Codeigniter routing system