2010-02-03 65 views
3

所以基本上我有同样的问题描述herethere。我尝试了所有描述(还有更多......),但无论如何。这是我的.htaccess:“?”CodeIgniter URL重写问题

RewriteEngine on 

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

我尝试过各种东西,如添加一个“/”前“的index.php”或不之后的“index.php”,但它没有改变任何东西。

我们在开发环境中有完全相同的文件,但是当转到生产环境时,我无法让index.php消失。两个环境之间的唯一区别是它们在各自服务器上的位置(.../public_html/APP与.../public_html/sub-domains-name/APP),我不认为它是相关的,但我已经拥有在移动应用程序时CI存在一些问题,所以也许有些东西在那里。

哦,最后,这里是在config.php文件中的相关行:

$config['base_url'] = "http://www.domain.com/"; 
$config['index_page'] =''; 
$config['uri_protocol'] = "AUTO"; 

编辑 此外,由于生产和开发环境,在同一台服务器上,我已经排除了可能性代表apache的配置问题。

EDIT2 我试图在生产服务器上创建一个子目录,并在那里迁移网站(www.domain.com/test/)。一切工作正常这样...所以肯定有一个配置参数我失踪somwhere。

+0

关于您的编辑 - 在“同一台服务器上”(通过逻辑服务器)并不一定意味着apache对两种部署都使用相同的配置。 – naivists 2010-02-03 20:36:49

+0

是的好点,我会问服务器管理员。 – Afrosimon 2010-02-03 20:42:27

回答

1

我在我的应用程序中使用了相同的重写规则。试试这个: 变化

$config['uri_protocol'] = "AUTO"; 

成为

$config['uri_protocol'] = "QUERY_STRING"; 

它在我的工作很好。

试着潜入apache访问日志和错误日志,找出浏览器请求由apache路由的位置以及您的配置项如何获取该请求。在CI激活日志也有帮助:

$config['log_threshold'] = 2; 

不要忘记appropiate权限设置为system/logs目录,以便Apache可以写入日志文件给它。