所以基本上我遇到的问题是here和there。我尝试了所描述的一切(以及更多......),但无论如何。这是我的.htaccess:
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/)。一切都运行得很好......所以肯定有一个我失踪的配置参数。
答案 0 :(得分:1)
我在我的应用程序中使用相同的重写规则。试试这个: 变化
$config['uri_protocol'] = "AUTO";
成为
$config['uri_protocol'] = "QUERY_STRING";
它在我的工作中很好。
尝试浏览apache访问日志和错误日志,找出apache路由浏览器请求的位置以及CI如何获取该请求。激活登录CI也有帮助:
$config['log_threshold'] = 2;
不要忘记为system/logs
目录设置适当的权限,因此apache可以将日志文件写入其中。