2011-04-27 124 views
0

我正在尝试将我的CI 1.7.2应用程序迁移到2.0.2。我已经到了我的默认控制器和页面加载正确的地步。 Yey!在CodeIgniter中,始终加载默认控制器

但是,默认控制器是所有加载的。例如:

myapp/ -> loads default controller (one) 
myapp/one -> loads default controller (one) 
myapp/two -> loads default controller (one) 
myapp/three -> loads default controller (one) 

.htaccess是:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    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是:

$config['base_url'] = 'http://localhost/myapp/branches/Source%20Code/'; 
$config['index_page']  = ''; 
$config['uri_protocol'] = 'QUERY_STRING'; 

顺便说一句,我已经试过了所有URI PROTOCOL其他可能值,他们给我“The page you requested was not found.”

Final LY,我routes.php是:

$route['default_controller'] = "one"; 

我也试图改变default_controller“二”,它可以正确地装入“两节”控制器。但是,当default_controller是“one”,我在地址栏中键入“myapp/two”时,它仍然加载“one”

我错过了什么? :)

+0

重要问题:到目前为止,您是否遵循过所有*** [升级步骤](http://codeigniter.com/user_guide/installation/upgrading.html)?这个问题听起来含糊不清,我认为这是Codeigniter的简单... – 2011-04-27 07:48:10

+0

根据这个线程http://codeigniter.com/forums/viewthread/187501/,在官方论坛中,你已经解决了这个问题? – Repox 2011-04-27 09:01:49

+0

@Repox:是的,但解决方案与我所希望的不同。我使用QUERY_STRING感到不舒服。我正在寻找类似tgriesser下面的答案。 – Obay 2011-04-27 09:24:23

回答

2

听起来像一个htaccess的问题。试着改变你的Mod重写本:

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

,然后更改$config['uri_protocol']AUTO

+0

谢谢,但没有解决它。实际上,为了简单起见,我在这个问题中改变了base_url。但实际的base_url实际上就像它现在,在上面(已编辑)。所以我尝试了你的建议,但没有奏效。我也尝试过'RewriteRule ^(。*)$ /myapp/branches/Source%20Code/index.php/$1 [L]',但仍然无法工作。任何其他想法? :) – Obay 2011-04-27 07:14:54

+0

确定它是否是htaccess问题的最佳方法是将index_page更改回index.php,并查看控制器是否正确加载。如果他们这样做,那么它是htaccess,如果他们不这样做,那么它是在你的PHP中。 – tgriesser 2011-04-28 01:58:15

0

我觉得uri_protocol => 'PATH_INFO' 不支持

因此,改变试图

$配置[ 'uri_protocol'] = 'QUERY_STRING'; //应用/配置/ config.php中

然后, 在你,htaccess的改变

重写规则(。*)的index.php/$ 1 [L]

重写规则^(。*)$的index.php?$ 1 [L]