Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter路线:我一直得到404_Php_Codeigniter - Fatal编程技术网

Php CodeIgniter路线:我一直得到404

Php CodeIgniter路线:我一直得到404,php,codeigniter,Php,Codeigniter,我有一个application/controller/login.php文件,其中包含以下内容 class Login extends Controller { function Login() { parent::Controller(); } function index() { $this->mysmarty->assign('title', 'Login'); $this->mysmarty->assign('s

我有一个application/controller/login.php文件,其中包含以下内容

class Login extends Controller {

  function Login()
  {
    parent::Controller();  
  }

  function index()
  {
    $this->mysmarty->assign('title', 'Login');
    $this->mysmarty->assign('site_media', $this->config->item('site_media'));
    $this->mysmarty->display('smarty.tpl');
  }
}
我的路线定义如下所示:

$route['default_controller'] = "welcome";
$route['login'] = 'login';
$route['scaffolding_trigger'] = "";

问题是,当我尝试访问时,我总是得到一个404。我做错了什么?我已经检查了CI routes文档,无法发现任何东西。

这应该不会有任何问题-没有路由它可以工作吗?
另外,您是否正确设置了.htaccess(即,它确实起作用)

如果您已将“enable\u query\u strings”设置为true且未使用.htaccess mod\u重写规则,则需要记住另一点:

在config/config.php中:

$config['enable_query_strings'] = TRUE;
$config['controller_trigger']   = 'c';
$config['function_trigger']     = 'm';
$config['directory_trigger']    = 'd';
正确路由请求的URL如下所示:

http://localhost/myapp/index.php?c=login

如果你没有使用
.htaccess
文件从你的应用程序中删除你的
index.php
,那么这本身就是另一场球赛。但你能做的是:

设置一个默认的
控制器
,该控制器不是
欢迎
文件,如果您希望欢迎文件成为您的默认控制器,请以这种方式使用链接

http://localhost/myapp/index.php/login
请记住,只有在未使用
.htaccess
文件删除
index.php
文件时,这种方法才有效

同时打开
aplication/config/config.php
,并将此代码用于
baseurl

$config['base_url'] = 'http://localhost/myapp';

这应该一直都能奏效。

谢谢你这么做。但是为什么默认的_控制器不需要index.php呢?默认情况下,如果您转到web服务器上的某个文件夹,Apache会查找index.html、index.php、main.php等,因此相当于。首先,您需要告诉我们您使用了哪个CI版本?由于CI版本(3.x),控制器类名和文件名的首字母必须大写,因此可能会出现大写问题,但如果您的CI版本为3.x。