1

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

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

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

访问 URL http://www.estiem.no/ESTIEM/CI/有效,但http://www.estiem.no/ESTIEM/CI/site/index无效。它给出了 404。控制器站点存在,并包含方法“索引”

有什么想法可能是错的吗?

4

4 回答 4

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。他们真的应该将它添加到回购中。

于 2011-04-09T02:48:27.163 回答
0

您需要从 index.php 中删除 /

RewriteRule ^(.*)$ index.php/$1 [L]
于 2011-03-07T18:00:08.497 回答
0

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

/ESTIEM/CI/

所以你的.htaccess会看起来像:

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

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

于 2011-03-07T18:02:44.677 回答
0

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

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

  • 本地主机/站点/控制器 == c:...\site\controller.php
  • 本地主机/站点/控制器 == c:...\SITE\controller.php

别的

<?php

controller Mycontroller extends Controller {

}

?>

mycontroller.php在控制器文件夹中命名


如果所有其他方法都失败,请通过以下方式替换您的 htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
于 2014-07-22T12:59:57.087 回答