我一整天都在搜索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问题和答案,试图解决它,但无济于事。
请帮忙。
答案 0 :(得分:0)
你不能像以下那样使用路线:
$route['(:any)'] = 'pages/$1';
它无法满足您的所有功能。
只是建议:
将您的路线用作:
$route['about'] = 'pages/about';
$route['contact'] = 'pages/contact';
$route['view/(:any)'] = 'pages/view/$1';
......
如果您使用(:any)
作为第一个参数,则您需要针对不同网址的不同路由,它将无法正常运行所有功能。
答案 1 :(得分:0)
试试这个
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
答案 2 :(得分:0)
注意使用APPPATH常量时,路径以' /'结尾。已经
尝试更改
sklearn
到
if (!file_exists(APPPATH.'/views/pages/'.$page.'.php'))