尝试访问CodeIgniter中的现有控制器时给出404

时间:2011-03-07 17:41:20

标签: codeigniter codeigniter-2 codeigniter-url

我正在开发一个相当新的CodeIgniter 2.0安装。

我有一个包含此代码的htaccess文件

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

转到网址http://www.estiem.no/ESTIEM/CI/有效, 但http://www.estiem.no/ESTIEM/CI/site/index没有。它给出了404.控制器站点存在,并包含方法'index'

任何想法可能出错?

4 个答案:

答案 0 :(得分:0)

您需要从index.php中删除/

RewriteRule ^(.*)$ index.php/$1 [L]

答案 1 :(得分:0)

我刚才注意到,由于您在子文件夹中安装了CI,因此您需要在.htaccess重写中考虑到这一点:

  

/ ESTIEM / CI /

所以你的.htaccess会是这样的:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /ESTIEM/CI/index.php/$1 [L]

这应该解决它(抱歉晚编辑,由于@BrianOrtiz的评论)

答案 2 :(得分:0)

这是一个htaccess问题,当每个人都通过该代码时我们发现许多主机不喜欢它并且你可以用它来破解它?或者这个或那个,直到它最终看起来像一个拼图(条件是),但使用一个辉煌的htaccess(不知道谁是第一个但是500已经得到赞誉)你将永远不必再改变它(不是永远不会但它将在99%的时间内完成编辑):

# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>  

相信我,我有同样的问题,并且在我应该来到这里或者甚至是CI wiki(因为这是我看到它的第一个地方)时花费了几个小时,你不会相信在CI中解决了多少问题只有那一点htaccess。他们真的应该把它添加到回购中。

答案 3 :(得分:0)

尝试使用以下命令访问控制器:localhost / site / index.php / controller

如果这不起作用,可能是因为CI区分大小写

  • localhost / 网站 / controller == c:... \ site \ controller.php
  • localhost / 站点 / controller == c:... \ SITE \ controller.php

其他

<?php

controller Mycontroller extends Controller {

}

?>

将在controllers文件夹

中命名为mycontroller.php

如果所有其他方法都失败,请用此替换你的htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]