Codeigniter和.htaccess文件忽略index.php

时间:2013-07-10 06:18:50

标签: .htaccess codeigniter

所以我对.htaccess文件和codeigniter有一个奇怪的问题。我在我的本地机器上有一个wamp服务器,它按预期工作。我有像wamp / www / my_app这样的文件夹,在my_app文件夹中我有.htaccess这样的文件:

ErrorDocument 404 /index.php
<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /my_app/
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
   ErrorDocument 404 /index.php
</IfModule>  

在我的config.php gile中我有:

 $config['base_url']='';
 $config['index_page']='';
 $config['uri_protocol']='AUTO';

所以我尝试在apps.myserver.com/my_app等链接上将该项目上传到debian服务器。我把我的应用程序放到文件夹var / www / my_app。但诀窍在于它不起作用。

我尝试将uri_protocol更改为所有5个选项,但没有更改。我也尝试将.htaccess文件放到var / www而不是var / www / my_app但是没有改变。

当我尝试访问没有index.php前缀的控制器时,我一直收到那个愚蠢的404 Not Found错误。

有什么想法吗?

编辑:我在服务器上检查了phpinfo,发现mod_rewrite在加载的模块中。

1 个答案:

答案 0 :(得分:0)

mod_rewrite模块可以有几个不同的扩展名。您的Debian服务器可能使用mod_rewrite.so而不是mod_rewrite.c

也就是说,如果您知道mod_rewrite已启用,并且您的应用程序未被广泛分发且需要检查它,则可以安全地取消if检查。

你提到评论除了第3行和第7行之外的所有内容 - 你注释掉了RewriteBase定义,它破坏了内容。

尝试一些简单的事情,并从那里开始工作:

RewriteEngine On
RewriteBase /my_app/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

此外,如果.htaccess很奇怪,您可以执行的一个变体是将index.php之后的所有内容更改为查询字符串。请注意?此处:

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

您可能会也可能不会更改CodeIgniter中的uri_protocol配置设置。我的猜测是你特别不会,但这是其他人有.htaccess问题的信息。