praet0ri4n
praet0ri4n

Reputation: 53

CodeIgniter - calling main controller resets url to server root

I have a little problem with codeigniter and the default controller behavior. My CI resides in a subdir on the development environment at localhost/web/new_info and the same path for production like 192.168.30.108/web/new_info.

Always when calling the url like

localhost/web/new_info/welcome

the page takes me to the server root, e.g. localhost/.

But I can call the "welcome" controller via:

and I can call welcome's methods as well like

There is another subdir in my controllers called settings and contains another welcome.php intself. I can access this controller directly without problems and the page stays there

There is .htaccess and mod_rewrite set up according to 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>

in config/development/config.php I have

...
$config['base_url'] = 'http://localhost/web/new_info/';
$config['index_page'] = '';
...

and generic routes

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Xampp and the real server running apache2 act the same way. Even after completely disabling mod_rewrite and calling the welcome controller redirects to server root.

Currently I am using CI 3.0.3 and tested with the latest 3.0.6 as well with the same behavior.

What I want is to call localhost/web/new_info/welcome and stay there.. Thank you!

Upvotes: 0

Views: 99

Answers (1)

praet0ri4n
praet0ri4n

Reputation: 53

Ok, found out by myself.. dumb copy paste of .htaccess.

Namely the line

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

has to be

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

in my case. The author of the htaccess file didn't mention it on his page.

But changing the htaccess file only did not help. I had to completely restart my session, otherwise changes were not applied. It's a bit unusual for me, I thought changes in this file were instant.

Nevertheless, it's fine now.

Upvotes: 1

Related Questions