【发布时间】:2016-03-11 22:12:03
【问题描述】:
我整天都在 stackoverflow 上搜索这个问题的答案,但我似乎找不到。
我的 Codeigniter 应用程序位于 AWS EC2 服务器上。
这是我的 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问题和答案以尝试解决它,但无济于事。
请帮忙。
【问题讨论】:
-
检查
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]而不是RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]。 -
您使用的是什么版本的 CI?
-
@wolfgang1983 最近的一个。 3.0.5
-
@Tpojka 也没有用。
-
@J.Han 在该版本的默认控制器路由中不能有子文件夹。您需要有一个合适的 MY_Router.php 来启用该功能,如此处所示。 stackoverflow.com/questions/35620564/…
标签: php .htaccess codeigniter amazon-web-services amazon-ec2