Remove index.php From URL - Codeigniter 2
I am having trouble removing index.php from my URLs in Codeigniter. I've made a few websites with Codeigniter 1.7 and the .htaccess code I used doesn't work in 2.
I have tried using
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
and
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ ./index.php/$1 [L]
</IfModule>
I've also tried it without RewriteBase / in.
I have changed the $config['uri_protocol'] to REQUEST_URI and QUERY_STRING and nothing.
I have set $config['index_page'] = "";
The file structure is 192.168.0.130/(site)/ so it must be going back to the root of the server and can't find the index.php file.
All of the controllers I have made can be reached by putting 192.168.0.130/(site)/index.php/testcontroller
Thank you.
Apologies if this has been asked before - I have looked and tried what I could see.
Edit:
I should also add that I changed the default folders to be
application
CI-2.0
index.php
and changed the paths in index.php to be correct.
Try the first code block you posted, but instead of /index.php try using /(site)/index.php (obv replacing (site) with whatever your site folder is named).
This worked for me:
- Create your htaccess file
- Set $config[‘index_page’] to an empty (config.php)
- string Set $config['uri_protocol'] = 'REQUEST_URI'; (config.php)
This is my htaccess file:
Options -Indexes
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
#When your application folder isn't in the system folder
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
Source:
http://taggedzi.com/articles/display/codeigniter-2-htaccess-and-friendly-urls