CodeIgniter路由不起作用

时间:2011-08-31 20:30:21

标签: codeigniter routes

我的路线文件中有以下路线:

$route['default_controller'] = "main";
$route['404_override'] = '';
$route['testroute'] = "main";

正如你所看到的,我想要的是当有人去mydomain.com/testroute时它应该只返回默认控制器。然而,当我去那时我得到404错误。我在写这条路的方式上做错了吗?

3 个答案:

答案 0 :(得分:9)

您必须在应用中创建.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] 

请将此代码粘贴到.htaccess文件中。

答案 1 :(得分:1)

LoneWolfPR用他的评论击中了头部,你正在使用FastCGI,这需要一个不同的htaccess。

你可以尝试使用这个吗?

https://raw.github.com/pyrocms/pyrocms/develop/.htaccess

我很想建议我们将它添加到CodeIgniter 2.1-dev中以保存这个问题,每天出现15次。让我知道它是否有效。

答案 2 :(得分:1)

听着,这是有史以来最愚蠢的答案,但这是我对类似情况的体验 - 刚刚发生。我很无奈,但它开始工作 - 这就是如何。

我有一个控制器,调用者ReadController.php(类调用相同)。 路线是一样的:

$route['default_controller'] = "ReadController";

使用www.martinjovanovic.com/DSi1.5-v01/index.php/ReadController/调用它 - 工作了。 但仅用martinjovanovic.com/DSi1.5-v01/调用它根本就不起作用。

基本网址是我的域名和文件夹的网址:wwww.martinjovanovic.com/DSi1.5-v01 /

对htaccess没有任何改变,我把它保留为默认值(拒绝所有)。

  1. 我将默认控制器切换回welcome.php。
  2. 制作副本,称为welcome2.php。类相应地重命名。
  3. 将路线更改为welcome2。有效。同样的欢迎屏幕。
  4. 将welcome2.php中的index()更改为某些echo('something')。它奏效了。
  5. 将welcome2.php重命名为read.php,相应的类。在路线中更改了它。它奏效了。
  6. 将原始ReadController.php中的整个代码复制粘贴到read.php中。它奏效了。
  7. 就是这样。同样的事情开始起作用。

    原始ReadController.php和新的read.php之间的唯一区别在于第一行。在我的新read.php中,我保留了旧的ReadController.php中实际上缺少的第一行(我的开发人员省略了它,我猜):

    if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    

    这是在打开php标签之后立即发生的。 这是唯一的区别。我不明白为什么它会产生这样的差异。也许它根本不是关于它的。尽管如此,它还是有效的。

    这个故事的寓意是:我从最初的工作开始,并慢慢地将其改为我需要的东西,直到它起作用......