CodeIgniter - 调用主控制器将url重置为服务器根

时间:2016-07-11 08:15:47

标签: codeigniter

我对codeigniter和默认控制器行为有一点问题。 我的CI位于localhost / web / new_info的开发环境的子目录中,以及192.168.30.108/web/new_info等生产的相同路径。

总是在调用网址时

本地主机/网络/ new_info /欢迎

该页面将我带到服务器根目录,例如本地主机/.

但我可以通过以下方式致电“欢迎”控制器:

  • 本地主机/网络/ new_info /
  • 本地主机/网络/ new_info / index.php的/欢迎

我可以调用welcome的方法,比如

  • 本地主机/网络/ new_info /欢迎/注销

我的控制器中还有另一个名为settings的子目录,包含另一个welcome.php intself。我可以直接访问这个控制器而没有问题,页面就在那里

  • 本地主机/网络/ new_info /设置/欢迎

根据.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并留在那里.. 谢谢!

1 个答案:

答案 0 :(得分:1)

好的,我自己找到了.htaccess的哑抄贴。

RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]

必须是

RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ /web/new_info/ [L,R=301]

在我的情况下。 htaccess文件的作者在他的页面上没有提到它。

但是改变htaccess文件只是没有帮助。我必须完全重启我的会话,否则不会应用更改。这对我来说有点不寻常,我认为这个文件中的更改是即时的。

尽管如此,现在还不错。