404页面不存在。未找到您所请求的页面。 Codeigniter 3.0.6

时间:2016-06-08 09:09:31

标签: php .htaccess codeigniter model-view-controller codeigniter-3

我遇到CodeIgniter3:404找不到页面

文件:application / controllers / Welcome.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {   
    public function __construct()
    {
        parent::__construct();
    }
    public function index()
    {
        $this->load->view('Welcome_Page');
    }
    public function tutorial()
    {
        $this->load->view('Tutorial_Page');
    }
    public function manual()
    {
        $this->load->view('Manual_Page');
    }
    public function forum()
    {
        $this->load->view('Forum_Page');
    }
    public function register()
    {
        $this->load->view('Register_Page');
    }
    public function login()
    {
        $this->load->view('Login_Page');
    }
}

文件:application / config / autoload / php

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

文件:application / config / routes.php

$route['default_controller'] = 'welcome';
$route['translate_uri_dashes'] = FALSE;

文件:application / config / config.php

$config['base_url'] = 'http://subdomain.domain.tld';
$config['index_page'] = '';

文件:.htaccess

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

页面加载Welcome_Page,但不加载其他页面。

404 Page Not Found

The page you requested was not found.

在文件夹视图中,存在页面:Forum_Page.php,Login_Page.php,Manual_Page.php,Register_Page.php,Tutorial_Page.php和Welcome_Page.php

非常感谢您的理解!

2 个答案:

答案 0 :(得分:5)

试试这个。使用以下代码替换.htaccess代码:YOURPROJECTNAME是您的基本文件夹。例如如果您在本地服务器上并且您的项目名为myproblem,那么将'YOURPROJECTNAME'替换为'myproblem'

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* YOURPROJECTNAME/index.php/$0 [PT,L]

确保.htaccess也是您应用的根目录。

答案 1 :(得分:0)

啊,我现在看到了。你的问题在于路由。您打算将页面作为

http://sub.domain.tld/welcome/tutorial
http://sub.domain.tld/welcome/manual
...

但您创建了视图HTML以获取

http://sub.domain.tld/tutorial
http://sub.domain.tld/manual
...

APPPATH.'config/routes.php'文件中,在保留路由下,您必须通过以下方式重新路由:

$config[(:any)] = 'welcome/$1'

你需要注意两件事:

  1. 占位符(:any)将在$1
  2. 进行
  3. 包含(:any)参数的路由必须位于文件末尾,因为
      

    路线将按照定义的顺序运行。较高的路线总是优先于较低的路线。

  4. 更多here。检查文档中的整个页面和其他页面。