Route或base_url在CodeIgniter中无法正常工作

时间:2018-01-21 10:47:03

标签: php codeigniter

我目前正在开发我的个人博客,但我的路线有问题。假设我有一个名为

的控制器

博客

<?php 

class Blog extends CI_Controller {
    public function index(){
        $data['posts'] = $this->BlogModel->get_post();

        $this->load->view('frontend/header');
        $this->load->view('frontend/navbar');
        $this->load->view('frontend/BlogContent',$data);
        $this->load->view('frontend/footer');
    }

    public function view($slug = NULL){
        $data['post'] = $this->BlogModel->get_post($slug);

        if(empty($data['post'])){
            show_404();
        }

        $data['title'] = $data['post']['title'];

        $this->load->view('frontend/header');
        $this->load->view('frontend/navbar');
        $this->load->view('frontend/blog/view',$data);
        $this->load->view('frontend/footer');
    }
}
?>

我的路线如下:

$route['blog/(:any)'] = 'blog/view/$1';
$route['default_controller'] = 'home';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

然后我尝试访问此部分http://localhost/cathode/blog/post-one正常工作

但是在访问这些部分后尝试访问导航栏菜单时,我的base_url包含在“博客”控制器中。

blog

所以当我尝试访问“主页”菜单时,路线将指向http://localhost/cathode/blog/home,实际上我的base_url为http://localhost/cathode/,我该如何解决此问题?

由于

2 个答案:

答案 0 :(得分:0)

根据给定的信息,假设很少,我认为你的导航栏就像:

<a href="home">Home</a>

然而,您必须像这样添加 base_url()

<a href="<?= base_url('home'); ?>">Home</a>

如果您有问题,请告诉我。

更新

从提供的HTML代码:

<li class="nav-item "> 
    <a class="nav-link" href="<?php base_url();?>home">
    HOME <span class="sr-only">(current)</span>
    </a> 
</li> 
<li class="nav-item"> 
    <a class="nav-link" href="<?php base_url();?>about">ABOUT</a> 
</li>

替换 <?php base_url(); ?>

<?php echo base_url();?> <?= base_url();?>

答案 1 :(得分:0)

尝试在echo之前添加base_url(),如下所示:

...
<li class="nav-item "> <a class="nav-link" href="<?php echo base_url(); ?>home">HOME <span class="sr-only">(current)</span></a> </li>
<li class="nav-item"> <a class="nav-link" href="<?php echo base_url(); ?>about">ABOUT</a> </li>
...