我对codeigniter和默认控制器行为有一点问题。 我的CI位于localhost / web / new_info的开发环境的子目录中,以及192.168.30.108/web/new_info等生产的相同路径。
总是在调用网址时
本地主机/网络/ new_info /欢迎
该页面将我带到服务器根目录,例如本地主机/.
但我可以通过以下方式致电“欢迎”控制器:
我可以调用welcome的方法,比如
我的控制器中还有另一个名为settings的子目录,包含另一个welcome.php intself。我可以直接访问这个控制器而没有问题,页面就在那里
根据.htaccess和mod_rewrite设置 http://www.farinspace.com/codeigniter-htaccess-file/
的.htaccess
SetEnvIf Host 192.168.30.108$ CI_ENV=production
SetEnvIf Host localhost$ CI_ENV=development
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /web/new_info/
RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
在config / development / config.php中我有
...
$config['base_url'] = 'http://localhost/web/new_info/';
$config['index_page'] = '';
...
和通用路线
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
Xampp和运行apache2的真实服务器的行为方式相同。即使在完全禁用mod_rewrite并调用welcome控制器后,也会重定向到服务器根目录。
目前我正在使用CI 3.0.3并使用最新的3.0.6进行测试以及相同的行为。
我想要的是调用localhost / web / new_info / welcome并留在那里.. 谢谢!
答案 0 :(得分:1)
好的,我自己找到了.htaccess的哑抄贴。
即
行RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
必须是
RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ /web/new_info/ [L,R=301]
在我的情况下。 htaccess文件的作者在他的页面上没有提到它。
但是改变htaccess文件只是没有帮助。我必须完全重启我的会话,否则不会应用更改。这对我来说有点不寻常,我认为这个文件中的更改是即时的。
尽管如此,现在还不错。