How do I write a .htaccess file to make CodeIgniters URL routing work? How do I write a .htaccess file to make CodeIgniters URL routing work? codeigniter codeigniter

How do I write a .htaccess file to make CodeIgniters URL routing work?


In your system/application/config/config.php, change

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

to

$config['index_page'] = "";

and in your .htaccess, add this:

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

Add your .htaccess file to the same directory where the system folder is located, so in your CodeIgniter root directory, you should have

  • system/
  • user_guide/
  • index.php
  • .htaccess
  • license.txt

Also, since you have multiple sites running on your server, you might want to have VirtualHosts. Add this to the last part your apache2.conf for each site that you have:

Listen *:11000<VirtualHost *:11000>     ServerAdmin you@somewhere.com     DocumentRoot "/var/www/cms"     ServerName you-dummy.com     <Directory "/var/www/cms">          AllowOverride All          Options +Indexes          DirectoryIndex index.php          Order allow,deny          Allow from all     </Directory>     ErrorLog logs/cms_log     CustomLog logs/cms_log common</VirtualHost>

You may now access the site from http://localhost:11000/ and access the controller using http://localhost:11000/hello.


Tried the answer here but that didn't work for me. So i tried the following and it did...

create the .htaccess in the root directory where the index.php along with license.txt is available. enter the following code in the file and store it:

DirectoryIndex index.phpRewriteEngine onRewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ ./index.php/$1 [L,QSA]  

done! try it and it will surely work. Hope it helps


Had some problems with finding where to change the "AllowOverRide All".

From this guide I found the (default) file.

Remove Index.php CodeIgniter URL On Ubuntu

  1. Preliminary Note.I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root:

    sudo su
  2. Enable mod_rewrite module on apache.First enable the module as follows:

    a2enmod rewrite

    Change all occurrence of "AllowOverRide None" to "AllowOverRide All". Basically all "None" to "All" in the following file:

     gedit **/etc/apache2/sites-available/default**

    Restart Apache:

    /etc/init.d/apache2 restart
  3. Open file config.php on CodeIgniter (application\config).Remove index.php on $config['index_page'] = "index.php";

    $config['index_page'] = "";
  4. Make file .htaccess on CodeIgniter root directory.Fill the file with this code :

    RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php/$1 [L]

Now Index.php on CodeIgniter URL disappear