路由时出错404

时间:2016-10-25 13:35:59

标签: php codeigniter

我试图像我的教程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

的文件

1 个答案:

答案 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