2017-01-31 77 views
0

我正在使用CodeIgniter v3.1.3。基于“静态页面”教程,我试图创建一个包含5个页面的静态网站,例如主页,关于,服务,投资组合和联系人。导航菜单在CodeIgniter中无法正常工作

我在'application/controllers'目录下有一个Pages.php控制器。

我Pages.php控制器看起来像

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Pages extends CI_Controller { 
    //Controller logic 
    public function view($page = 'home') 
    { 
     if(!file_exists(APPPATH.'views/pages/'.$page.'.php')){ 
      //Whoops!, we don't have a page for that 
      show_404(); //In-built CI function to show 404 error pages 
     } 

     $data['title'] = ucfirst($page); //Capitalize the first letter 
     $this->load->view('templates/header',$data); 
     $this->load->view('pages/'.$page,$data); 
     $this->load->view('templates/footer',$data); 
    } 
} 

我也创建内部'application/views/pages'像home.php,about.php,services.php,portfolio.php,contact.php

5个静态页面

标题的常见代码&页脚存在于'application/views/templates' like footer.php & header.php。 内的header.php我的导航菜单看起来像

<li><a class="curr_menu" href="<?php echo base_url('pages/view/home');?>">Home</a> 
</li> 
<li><a class="page-scroll" href="<?php echo base_url('pages/view/about');?>">About Us</a> 
</li> 
<li><a class="page-scroll" href="<?php echo base_url('pages/view/services');?>">Services</a> 
</li> 
<li><a class="page-scroll" href="<?php echo base_url('pages/view/portfolio');?>">Portfolio</a> 
</li> 
<li><a class="page-scroll" href="<?php echo base_url('pages/view/contact');?>">Contact Us</a> 
</li> 

我的routes.php文件(的application/config/routes.php文件)看起来像

$route['default_controller'] = 'pages/view'; 
$route['(:any)'] = 'pages/view/$1'; 

的主页显示初始加载,但是当我点击在任何菜单项上,它返回'404页未找到'错误。

有人可以请解释 - 清晰的代码 - 显示,使我的菜单工作。 的.htaccess在根目录中包含

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 
+0

您是否管理'.htacess'文件? –

+0

是的,我有一个htaccess文件。我编辑了我的问题,包括我的htaccess文件 –

+0

'href =“<?php echo base_url('index.php/pages/view/home');?>”'它的工作与否.try一次 –

回答

0

我强烈建议您在地址栏中手工编写的URL,以确保该错误来自链接建设手动导航到想要的页面。

如果是这样,那么请尝试使用

<?php echo site_url('pages/view/home');?> 
+1

更改base_url()与site_url()产生相同的页面未找到错误 –

0

为了使用base_url(),你必须在你的controller.Like这个

public function __construct(){ 
    parent::__construct(); 
    $this->load->helper('url'); 

     } 

首先加载URL助手或可以在application/config/autolaod.php加载它。像这样...

$autoload['helper'] = array('url'); 

并且不要忘记设置bae_url在application/config/config.php

$config['base_url'] = 'your_url'; 

而且

$config['index_page'] = ''; 
$config['uri_protocol'] = 'REQUEST_URI'; 

在你的根文件夹。 .htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

是@Hek,它像$ autoload ['helper'] = array('url'); –

+0

尝试从控制器加载。 –

+0

是@Hek一个配置代码就像上面提到的那样 –

0

也许你的网址出错了。您的默认控制器是
“Pages/view”? 如果是这样,那么导航菜单应该是这样的:

<li><a class="curr_menu" href="<?=base_url()?>home">Home</a> 
</li> 
<li><a class="curr_menu" href="<?=base_url()?>about">About Us</a> 
</li> 
<li><a class="curr_menu" href="<?=base_url()?>services">Services</a> 
</li> 
<li><a class="curr_menu" href="<?=base_url()?>portfolio">Portfolio</a> 
</li> 
<li><a class="curr_menu" href="<?=base_url()?>contact">Contact Us</a> 
</li> 

而且在配置。php文件,

$config['base_url'] = 'http://yoururl/'; //should be followed by forward slash (/) 
    $config['index_page'] = '';