2013-07-10 61 views
0

所以我有一个奇怪的问题与.htaccess文件和codeigniter。我的本地计算机上有一台wamp服务器,并且在那里按预期工作。我的文件夹一样,WAMP/WWW/my_app应用和程序my_app文件夹我有.htaccess文件这样的:Codeigniter和.htaccess文件忽略index.php

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'; 

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

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

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

任何想法?

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

+0

首先检查你的服务器上是否启用了mod_rewrite,发送从顶部和底部删除这个ErrorDocuemnt,并且只是注释掉RewriteBase并且检查 – umefarooq

+0

所以我注释掉除第3行和第7行以外的所有行,并且没有任何反应。这是否意味着我没有在服务器上重写模块,或者这意味着它没有读取我的.htaccess文件? – gabrjan

+0

这是CI文档RewriteEngine上的最小htaccess代码 RewriteCond $ 1!^(index \ .php | images | robots \ .txt) RewriteRule ^(。*)$ /index.php/$1 [L] – umefarooq

回答

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] 

您可能会或可能不会改变笨的uri_protocol配置设置。我的猜测是你特别不会,但它是其他人有.htaccess问题的信息。

+0

好吧,我尝试了所有拥塞的选项,但没有效果。我真的放弃那个:S – gabrjan