Wednesday, May 26, 2010

CodeIgniter in a SubFolder

I have encountered this problem when I installed CodeIgniter in a subfolder, as part of the PDMS Admin Panel Project.

Problems:
- page not found when accessing controller methods/functions
- forms will not submit
- will only load the default controller

To solve the above problems, I read a lot of forum posts and discussions in the CodeIgniter Forum and found some enlightenment there. Here are the things that I did to solve the problems associated with Installing CodeIgniter in a Subfolder/Subdirectory:

- enable apache modules - you can do this in the httpd.conf file. I cant remember exactly what modules I enabled, but there were several of them
- used the following htaccess file (I put it inside the subfolder where I installed the CodeIgniter)

    RewriteEngine On
    RewriteBase /foldername/

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]
   
    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #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 [L]



    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
 I just found the above htaccess somewhere in the forum. Use it at your own risk.

- in my config file, I set the following
$config['base_url']    = "http://localhost/FOLDERNAME/";

I think that's all. I'll just add here if I can remember something.

1 comment:

  1. Thank you very much sir. I've been searching a lot to finally find your post. I've tried different things but that definitely solved my issue.

    ReplyDelete