繁体   English   中英

AWS EC2上的Codeigniter路由问题

[英]Codeigniter Routing Issues on AWS EC2

我一整天都在搜索stackoverflow来找到答案,我似乎找不到一个。

我在AWS EC2服务器上有我的Codeigniter应用程序。

这是我的routes.php:

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

编辑这是我目前的routes.php:

$route['default_controller'] = 'pages/home';
$route['about'] = 'pages/about';
$route['contact'] = 'pages/contact';
$route['home'] = 'pages/home';

这是我的Pages.php:

class Pages extends CI_Controller {

    function __construct(){
        parent::__construct();
    }

    public function home(){
        $this->view('home');
    }

    public function about(){
        $this->view('about');
    }

    public function contact(){
        $this->view('contact');
    }

    public function view($page)
    {
         if (!file_exists(APPPATH.'/views/pages/'.$page.'.php'))
        {
            // Whoops, we don't have a page for that!
            show_404();
        }

        $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);
    }

}

这是我的.htaccess:

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

我的config.php:

$config['index_page'] = '';

问题

如果我转到(my-url),它将使用我的default_controller。 如果我去(my-url)/ home或/ about或/ contact,我会收到404错误。 如果我去(my-url)/index.php/home或/ about或/ contact,我会得到default_controller。

我已仔细检查是否已安装并启用了mod_rewrite。 我似乎无法弄清楚为什么我什么都没得到。 我按照本教程进行了阅读,并阅读了许多stackoverflow问题和答案以尝试解决它,但无济于事。

请帮忙。

你不能像以下那样使用路线:

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

它不能满足您所有功能的需要。

只是建议:

使用您的路线:

$route['about'] = 'pages/about';
$route['contact'] = 'pages/contact';
$route['view/(:any)'] = 'pages/view/$1';
......

如果您使用(:any)作为第一个参数,则对于所有函数都不能正常工作,您需要针对不同URL的不同路由。

尝试这个

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

注意当使用APPPATH常量时,路径已经以'/'结尾

尝试改变

if (!file_exists(APPPATH.'/views/pages/'.$page.'.php'))

if (!file_exists(APPPATH.'views/pages/'.$page.'.php'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM