Skip to main content

Removing index.php from CodeIgniter installation

CodeIgniter by default routes URLs through index.php. It is a bad practise from SEO perspective and also makes URLs ugly.

In order to remove index.php from CodeIgniter we need to create a .htaccess file in the root directory of CodeIgniter installation.

First of all we need ensure that AllowOverride is On in order to .htaccess to work.AllowOverride On

Second we need to check mod_rewrite is installed and enabled.

rewrite_module enabled

In the .htaccess file created above we need to write following rules.

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# PHP under mod_php5
<IfModule mod_php5.c>
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

# PHP under fast-CGI or other
<IfModule !mod_php5.c>
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

</IfModule>

Note the difference between mod_php5 and fast-CGI RewriteRule. fastCGI rule has a ‘?’ after index.php.

What Rewrite rule behind the scenes does is that if we call controller/action then it redirects to index.php/controller/action.

^(.*)$ is a regular expression that matches all the string passed.

RewriteCond adds exception for directories and other types of files.

Next from your application/config/config.php find variable $config['index_page'] and set it to blank string.

$config = ''

If CodeIgniter is installed in a sub-directory RewriteBase and RewriteRule will need to be changed accordingly. For example if CodeIgniter is installed in /public_html/CodeIgniter/ then RewriteBase and RewriteRule would be like following

RewriteBase /CodeIgniter/

RewriteRule ^(.*)$ /CodeIgniter/index.php/$1 [L]

If above configuration is still not working you’ll need to play around $config['uri_protocol'] in /application/config/config.php.

Final note—> I have installed html5boilerplate on my root directory which has some rewrite rules by default and I had installed CI in a sub-directory so I had to change my CI installation .htaccess to


RewriteBase /
RewriteRule ^(.*)$ sub-directory-name/index.php?/$1 [L]

Comments

Popular posts from this blog

How to split large mp3 files using mp3splt

If you have a  lengthy  or large MP3 file and you want to  split  it into files of smaller size or duration, You can easily do this using mp3splt. Mp3splt   is an utility to split mp3 and ogg vorbis digital audio files without the need of decoding. It can be used to split a file into no of tracks of fixed duration and size or specified  split points. It supports variable bit rate mp3 files, silent detection, splitting with local .XMCD, .CDDB or .CUE file splitpoints or from external servers like   tracktype.org . It copies the original files first and then generates new, smaller files during the process of splitting without altering the original file. It does not do any encoding or decoding so the splitting is very fast and lossless. Steps to follow Navigate to directory where you have downloaded mp3splt { if using portable version } . Run and execute mp3slpt using the command   mp3splt  . Specify the options according to which you wanna split. The basic syntax is   mp3splt [file path]...

Convert/Compress multiple images at once using IrfanView

Want to convert/compress multiple images at once? You can easily do this using a very useful and small image viewer called IrfanView. IrfanView is free image viewer that can be used to view, convert, optimize, process image files of numerous formats. It can also handle few video/audio formats, and has limited image creation and painting capabilities. It’s like an Swiss Army Knife for images. Some Features:— You can read more about IrfanView Here. Let’s get started. Open IrfanView and select Batch Conversion/Rename option from File Menu(Shortcut Key: B ) Navigate to folder where your images are located and Add the ones you want to compress. Choose the options you want to do from left window pane. Select the format and other options like Compression Ratio etc. from the Batch Conversion Settings Menu. Choose the options according to your need. After you are all set Click Start Batch. You images will be converted and you can find them in the specified output directory. Note—...