我试图像我的教程http://www.codeigniter.com/user_guide/tutorial/static_pages.html
那样做我的网站但路由有问题。我有页面" createBook"默认情况下,当我调用localhost它的工作!但是,当我喜欢localhost / createBook时,我有错误404.我做错了什么?
在我的控制器中:
public function view($page = 'createBook')
{
if ( ! file_exists(APPPATH.'views/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404();
}
$this->load->view($page);
}
routes.php文件
$route['default_controller'] = 'Books/view';
$route['(:any)'] = 'Books/view/$1';
我在视图文件夹中查看了名为Success和createBook
的文件答案 0 :(得分:0)
我没有真正得到你的问题,但在我看来你试图从url调用一个名为createBook的控制器,但在你的函数中它显示如果没有views / createBook.php而不是show 404,也许是你获得404的原因,因为你将控制器称为视图,我认为你的功能应该是这样的:
public function view($page = 'createBook')
{
if ( ! file_exists(APPPATH.'controllers/' . $page . '.php'))
{
// Whoops, we don't have a page for that!
$this->output->set_status_header('404');
show_404();
}
$this->load->view($page);
}
如果您希望自己的网址如下所示:
example.com/view/book/3
您的控制器应如下所示:
class View extends CI_Controller
{
public function book($book_id)
{
//Search the database for records about a book with its id, and return the data
//and assign it to a variable(in this case $data) ex : $data["book-name"] = ...
//And on your view you can call these values using ex : echo $book-name
$this->load->view('books_view', $data);
}
}
并确保index.php旁边的。 htaccess 文件看起来像这样:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
然后转到您的配置,并将此行更改为:
$config['index_page'] = '';
现在您可以通过这种方式访问所有控制器:
http://www.example.com/controller_name