10

I am using Codeigniter in Local WAMP. Here code is working fine. But i upload in Cpanel ( inside of example.com, folder name call 'mysite'). There I changed as,

  • db_name (config/database.php)
  • db_user_name (config/database.php)
  • db_password (config/database.php)
  • base_url as http://example.com/mysite (config/config.php)
  • uri_protocol as REQUEST_URI (config/config.php)

And also changed .htaccess(mysite/.htaccess) as,

<IfModule mod_rewrite.c>

RewriteEngine On

# Set the rewritebase to your CI installation folder
RewriteBase /mysite/


# Send everything to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

But not in mysite/application/.htaccess . It's empty.

Problem is, If I go http://example.com/mysite , it's showing default page as correctly. But if I click any link (http://example.com/mysite/user/signin), it's showing same default page. but URL is changed.

help me, Please...

config.php

$config['base_url'] = 'http://example.com/mysite';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
$config['url_suffix'] = '';
$config['language'] = 'english';
$config['charset'] = 'UTF-8';
$config['enable_hooks'] = FALSE;
$config['subclass_prefix'] = 'MY_';
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['allow_get_array']      = TRUE;
$config['enable_query_strings'] = FALSE;
$config['controller_trigger']   = 'c';
$config['function_trigger']     = 'm';
$config['directory_trigger']    = 'd';
$config['log_threshold'] = 0;
$config['log_path'] = '';
$config['log_date_format'] = 'Y-m-d H:i:s';
$config['cache_path'] = '';
$config['encryption_key'] = '***';
$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;
$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']      = "/";
$config['cookie_secure']    = FALSE;
$config['global_xss_filtering'] = FALSE;
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['compress_output'] = FALSE;
$config['time_reference'] = 'local';
$config['rewrite_short_tags'] = FALSE;
$config['proxy_ips'] = '';
define('CSS_FOLDER' , 'application/assets/css');
define('DEFAULT_IMAGE_URL' , 'application/assets/images/default');

routes.php

$route['default_controller'] = "welcome";
$route['404_override'] = '';
$route['user/(:any)'] = 'user/index';
6
  • Can you show us config/config.php and config/routes.php ? Commented Jul 16, 2013 at 13:05
  • @bborisovs now you can see... Commented Jul 16, 2013 at 15:21
  • where is your application located, in a subfolder? Commented Jul 26, 2013 at 16:17
  • @bottleboot yes. example.com/mysite/application Commented Jul 28, 2013 at 13:14
  • have you tried @user2621595's answer? I up voted it. Seems like that one would o the trick. It's what usually does it for me. Commented Jul 29, 2013 at 8:03

15 Answers 15

7
+25
$config['base_url'] = 'http://example.com/mysite/';

Better than :

$config['base_url'] = 'http://example.com/mysite';

Try this :

RewriteBase /

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /mysite/index.php/$1 [L]
Sign up to request clarification or add additional context in comments.

Comments

5

i was facing same issue ..its resolved when i use

$config['uri_protocol'] = 'AUTO'; 

in config.php ..try using AUTO and PATH_INFO for the same

make sure rewrite_module is on in apache

Comments

3

.htaccess Code

Restore the default config to config.php, Hope this helps you.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

Comments

1

If you plan to use subfolder on server do the same on local WAMP. This way you can test it before you send it on server.

I was using CI long time ago but I think you have to add mysite/ in some config file.

See: Installing a CodeIgniter application in a subfolder

4 Comments

see my file in question
Put your page in mysite/ folder on WAMP. If it will work problem is not in CI.
I changed my folder name as mysite1 from mysite in local WAMP and try localhost/mysite1 . It's working fine. i changed only $config['base_url'] = 'localhost/mysite1';
So CI is OK. There is some problem with remote server. You could use PHP file with <?php phpinfo(); ?> to see server configuration (maybe there is no mod_rewrite and .htaccess doesn't work), you can check info in CI logs in application/logs folder, you can check write privilage for application/logs and application/cache, you can check info in apache logs, and you can activate errors message in PHP (some servers doesn't show PHP errors). This way you can find some clue.
1

CodeIgniter can be told to load a default controller when a URI is not present, as will be the case when only your site root URL is requested.So once replace your default conroller 'welcome' with your conrtoller in routes.php , it may help you

Comments

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

Comments

1

Try this htaccess:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /mysite/index.php/$1 [L]

Also you should have created controller named user and this controller should ahve function signin.

Comments

1

I used following .htaccess file and it works for me with cpanel.

# index file can be index.php, home.php, default.php etc.
DirectoryIndex index.php

# Rewrite engine
RewriteEngine On

# condition with escaping special chars
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

Comments

1

Remove

$route['user/(:any)'] = 'user/index';

in your routes.php file. user/signin matches the above condition, that is why CI route the request to user/index instead of your "User" controller "signin" function.

What are you trying to achieve with that route configuration?

Comments

1

Open config.php and do following replaces

$config['index_page'] = "index.php"
to
$config['index_page'] = ""

In some cases the default setting for uri_protocol does not work properly. Just replace $config['uri_protocol'] ="AUTO" by $config['uri_protocol'] = "REQUEST_URI"

HTACCESS

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

Comments

1

Sometimes "ORIG_PATH_INFO" fixes this issue. So you can also try again with changing uri_protocol to "ORIG_PATH_INFO"

$config['uri_protocol'] = "ORIG_PATH_INFO";

and the base_url should be absolute,

$config['base_url'] = "http://example.com/mysite/";

Comments

1

Don't write anything in .htaccess file and remove $route['user/(:any)'] = 'user/index'; line and one thing very important make sure in your server mod rewrite extension should me enabled.

may this help you How to enable mod_rewrite in php.ini on shared hosting

Comments

1

I solved the same issue by changing the controller file name to start with a capital letter.

Just like the default 'Welcome' controller downloaded.

1 Comment

For me it was that and the models. Views were OK lowercase. MAMP didn't care about case.
0

There are few things that you have to take into consideration. when you setup your project with codigniter framework. following is the file that you have to make changes.

1).htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mysite/index.php/$1 [L]  

2)application/config/config.php

$config['base_url'] = 'http://example.com/mysite/';
$config['server_root'] = $_SERVER['DOCUMENT_ROOT'];
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';  

3)application/config/database.php

$db['default']['hostname'] = 'localhost'; // set your hostname
$db['default']['username'] = 'root'; // set database username
$db['default']['password'] = 'root'; //set database password
$db['default']['database'] = 'XYZ'; //set your database name
$db['default']['dbdriver'] = 'mysql';

4)application/config/routes.php

$route['default_controller'] = "user";  //your default controller
$route['404_override'] = '';  

Note: your .htaccess file must be in root directory. here it should be in mysite folder

Comments

0

try this

$config['uri_protocol'] = 'PATH_INFO';
$config['enable_query_strings'] = FALSE;

Httaccess

<IfModule mod_rewrite.c>
RewriteEngine On

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [NC]
</IfModule>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.