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

Php 在CodeIgniter中,始终加载默认控制器,php,codeigniter,Php,Codeigniter,我正在尝试将我的CI 1.7.2应用程序迁移到2.0.2。我已经达到了默认控制器和页面加载正确的程度。是的 但是,默认控制器是所有加载的控制器。例如: myapp/ -> loads default controller (one) myapp/one -> loads default controller (one) myapp/two -> loads default controller (one) myapp/three -> loads default cont

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

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

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['base_url'] = 'http://localhost/myapp/branches/Source%20Code/';
$config['index_page']     = '';
$config['uri_protocol']   = 'QUERY_STRING'; 
$route['default_controller'] = "one"; 
顺便说一句,我已经尝试了
URI协议的所有其他可能值,它们告诉我
“找不到您请求的页面。”

最后,我的
routes.php
是:

<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['base_url'] = 'http://localhost/myapp/branches/Source%20Code/';
$config['index_page']     = '';
$config['uri_protocol']   = 'QUERY_STRING'; 
$route['default_controller'] = "one"; 
我还尝试将默认的_控制器更改为“2”,并正确加载“2”控制器。但当默认的_控制器为“一”并且我在地址栏中键入“myapp/two”时,它仍然加载“一”


我错过了什么?:)

听起来像是一个访问问题。尝试将您的mod rewrite更改为:

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

重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$/myapp/index.php/$1[L]

然后将
$config['uri\u protocol']
更改为
AUTO

我认为uri\u protocol=>'PATH\u INFO'不受支持

所以,改变尝试

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

那么, 在您的.htaccess中更改

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

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


谢谢,但这并不能解决问题。实际上,为了简单起见,我在这个问题中更改了base_url。但实际的基本url实际上与现在一样,如上所述(已编辑)。所以我尝试了你的建议,但没有成功。我还尝试了
RewriteRule^(.*)$/myapp/branchs/Source%20Code/index.php/$1[L]
,但仍然没有成功。还有其他想法吗?:)确定这是否是htaccess问题的最佳方法是将index_页面更改回index.php,并查看控制器是否正确加载。如果他们这样做了,那就是htaccess,如果他们不这样做,那就是PHP中的一些东西。重要问题:到目前为止,您是否遵循了所有这些规则?这个问题听起来有点熟悉,我认为这是Codeigniter的一个简单问题……根据这条线索,,,在官方论坛上,你已经解决了这个问题?@Repox:是的,但解决方案与我希望的不同。我不习惯使用查询字符串。我在寻找类似于下面tgriesser的答案。你为什么对此感到“不舒服”?这似乎不合逻辑。