Codeigniter和.htaccess文件忽略index.php

Codeigniter和.htaccess文件忽略index.php,.htaccess,codeigniter,.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

所以我在.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>  
所以我试着在apps.myserver.com/my_app这样的链接上把这个项目上传到debian服务器。我将我的应用程序放入文件夹var/www/my_app。但诀窍是它不起作用

我尝试将uri_协议更改为所有5个选项,但没有更改。我还尝试将.htaccess文件放在var/www而不是var/www/my_应用程序中,但也没有改变

当我尝试访问没有index.php前缀的控制器时,我总是遇到愚蠢的404 Not Found错误

有什么想法吗


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

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\u协议
config设置,也可以不更改。我猜你肯定不会,但这是为其他有.htaccess问题的人提供的信息。

首先检查服务器上是否启用了mod_rewrite,发送并从顶部和底部删除此ErrorDocuemnt,然后只注释掉RewriteBase和check,所以我注释掉除第3行和第7行以外的所有行,但什么也没有发生。这是否意味着服务器上没有“重写”模块,还是意味着它没有读取我的.htaccess文件?这是“重写秒$1”上CI文档重写引擎上的最小htaccess代码^(index\.php | images | robots\.txt)RewriteRule^(.*)$/index.php/$1[L]我完全尝试了你给我的代码,但没有效果,我检查了,这样我就可以确认mod|u rewrite已加载到服务器上。如果你有wamp服务器,只需在浏览器上键入localhost,你就会看到phpinfo()链接点击它找到mod_rewrite在加载的模块下如果没有加载,那么你必须在你的wamp服务器中启用它,它真的很容易。我尝试了所有建议的选项,但没有效果。我真的要把它弄丢了
RewriteRule ^(.*)$ index.php?/$1 [L]