有人可以帮我这个忙吗?我想从网址中删除控制器名称
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。
谢谢
答案 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