我的路线文件中有以下路线:
$route['default_controller'] = "main";
$route['404_override'] = '';
$route['testroute'] = "main";
正如你所看到的,我想要的是当有人去mydomain.com/testroute时它应该只返回默认控制器。然而,当我去那时我得到404错误。我在写这条路的方式上做错了吗?
答案 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没有任何改变,我把它保留为默认值(拒绝所有)。
就是这样。同样的事情开始起作用。
原始ReadController.php和新的read.php之间的唯一区别在于第一行。在我的新read.php中,我保留了旧的ReadController.php中实际上缺少的第一行(我的开发人员省略了它,我猜):
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
这是在打开php标签之后立即发生的。 这是唯一的区别。我不明白为什么它会产生这样的差异。也许它根本不是关于它的。尽管如此,它还是有效的。
这个故事的寓意是:我从最初的工作开始,并慢慢地将其改为我需要的东西,直到它起作用......