我正在尝试将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”
我错过了什么? :)
答案 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]