我正在使用CodeIgniter v3.1.3。基于“静态页面”'教程,我正在尝试创建一个包含5个页面的静态网站,例如Home,About,Services,Portfolio和Contact。
我在'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'
内创建了5个静态页面,如home.php,about.php,services.php,portfolio.php,contact.php
标题和通用的常用代码页脚存在于'application/views/templates'
,如footer.php&amp; 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 Page Not Found &#39;错误。
有人可以解释 - 用清晰的代码 - 显示我的菜单。 根目录中的.htaccess包含
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
答案 0 :(得分:0)
我强烈建议您通过在地址栏中手动编写URL来手动导航到所需页面,以确保错误来自链接构建。
如果是,请尝试使用
<?php echo site_url('pages/view/home');?>
答案 1 :(得分:0)
要使用base_url()
,您必须先在控制器中加载url helper。就像这样
public function __construct(){
parent::__construct();
$this->load->helper('url');
}
或者你可以在application/config/autolaod.php
加载它。就像这样......
$autoload['helper'] = array('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]
答案 2 :(得分:0)
可能你的网址出错了。您的默认控制器是
“页面/视图”??
如果是这样,那么导航菜单应如下所示:
<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>
在config.php文件中,
$config['base_url'] = 'http://yoururl/'; //should be followed by forward slash (/)
$config['index_page'] = '';