Neurion
Neurion

Reputation: 388

CodeIgniter Noob - How does the index.php file work?

Here is my views directory:

-    views/
    -    home.php
    -    contact.php
    -    assets/
        -    css/
            -    main.css

config.php: (changing this doesn't seem to do anything)

$config['index_page'] = 'index.php';

routes.php:

$route['default_controller'] = "welcome";

When I request www.example.com/index.php, the default page (i.e. home.php) loads and all of the assets work. However, when I request www.example.com/index.php/welcome or www.example.com/index.php/welcome/index, the page loads but the assets don't work. The same also happens if I try to load the page from a link from the home page.

I have no idea what index.php is for. I want to be able to just request www.example.com/welcome/index which will call the welcome.php controller and call the index method. application/index.php looks pretty important for everything to work, do I haven't deleted it, but I don't really want it. What can I do?

Thanks.

Upvotes: 0

Views: 2152

Answers (3)

Drew
Drew

Reputation: 3234

I think you're asking 3 different questions here.

Firstly index.php is the main entry point for your codeigniter app. It's very important as all of your routes will go through the index. The reason you can change it in the config is so you can rename it to something other than index.php if your setup requires it

Secondly, just guessing here but I think your assets are being loaded using a relative path; prefix all of your assets with base_url(); e.g <?=base_url();?>assets/css/style.css

Thirdly, you'll need a htaccess file to hide the index.php (to give you www.example.com/welcome), or the equivalent if you're not using an apache server, which will look like the below (taken from http://www.codeigniter.com/user_guide/general/urls.html:

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

Upvotes: 2

Shafeeque
Shafeeque

Reputation: 2069

Before all learn How MVC framework will work,

www.example.com/controller/function

If you call www.example.com , then default controller will load. You can change this in config.php

Inside the function you can call view ( your actual html viewable scripts ). follow the user guide from https://ellislab.com/codeigniter/user-guide

by default codeignitor url will be like www.example.com/index.php/controller/function

index.php can be removed using .htaccess

Upvotes: 0

Vinie
Vinie

Reputation: 2993

Enable mode Rewriting on your server LAMP/WAMP and add a .htaccess file with following code

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

after doing above process you can use your urls without index.php i.e like www.example.com/welcome/index as well as your assets directory www.example.com/assets

Upvotes: 0

Related Questions