在CodeIgniter中,始终加载默认控制器

时间:2011-04-27 05:53:34

标签: php codeigniter

我正在尝试将CI 1.7.2应用程序迁移到2.0.2。我已经达到了我的默认控制器和页面加载正确的程度。 Yey!

然而,默认控制器是所有曾经加载过的。例如:

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.”

最后,我的routes.php是:

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

我也尝试将default_controller更改为“two”并正确加载“two”控制器。但是当default_controller是“one”并且我在地址栏中输入“myapp / two”时,它仍会加载“one”

我错过了什么? :)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我认为uri_protocol =&gt;

所以,改变尝试

  

$ config ['uri_protocol'] ='QUERY_STRING'; // application / config / config.php

然后, 在你的.htaccess中更改

  

RewriteRule(。*)index.php / $ 1 [L]

  

RewriteRule ^(。*)$ index.php?$ 1 [L]