17

I know this question is being ask already, i tried all those but still unable to remove index.php from url. Here are my details

Ubuntu 12.10
PHP : 5.4.6
Mod_rewrite in on
CI verson: 2.1

.htacess look like:

RewriteEngine On
RewriteBase /projectname

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

I also look at the below link but no luck.. Cannot remove index.php from url CI based site

How to remove "index.php" in codeigniter's path

My "/etc/apache2/sites-available/default" is look like this:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None 
        </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Any help appreciated!!

12
  • Anything suspicious in your logs? Commented May 15, 2013 at 4:53
  • And what is your $config['uri_protocol'] set to? Commented May 15, 2013 at 5:00
  • And, lastly, what error do you get. I suspect "Object Not Found"? Commented May 15, 2013 at 5:15
  • @MikeAnthony i am getting "The requested URL /projectname/aboutus was not found on this server." Commented May 15, 2013 at 5:25
  • And the other questions? Also, what happens when you visit the projectname root? And, what happens when you visit the root of the host (localhost)? Commented May 15, 2013 at 5:27

3 Answers 3

70

Step 1 :

Add this in htaccess file

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]
</IfModule>

Step 2 :

Remove index.php in codeigniter config

$config['base_url'] = ''; 
$config['index_page'] = '';

Step 3 :

Allow overriding htaccess in Apache Configuration (Command)

sudo nano /etc/apache2/apache2.conf

and edit the file & change to

AllowOverride All

for www folder

Step 4 :

Enabled apache mod rewrite (Command)

sudo a2enmod rewrite

Step 5 :

Restart Apache (Command)

sudo /etc/init.d/apache2 restart
Sign up to request clarification or add additional context in comments.

8 Comments

Finally! a working solution. Setp 5 can also be simply: service apache2 restart
Yes this solution is working for codeigniter 3.x + ubuntu 16.04
I highly recommend this solution for Codeigniter 3, LAMP and Ubuntu 14
I was missing the AllowOveride All - works now. thanks!
Verified works in Ubuntu 16.04, LAMP + Code Igniter 3. Thanks! :)
|
7

In application/config/config.php change:

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

to:

$config['index_page'] = '';

it is a good idea to do apache reload everytime you change an apache config file.

sudo /etc/init.d/apache2 reload

or:

sudo service apache2 reload

or:

sudo /etc/init.d/httpd reload

(or whatever is the equivalent command for your platform)

for what it is worth, here is my .htaccess

RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|static|robots\.txt|favicon\.ico|uploads|googlexxxxxxxx\.html|mobile.html)
RewriteRule ^(.*)$ index.php/$1 [L]

5 Comments

yes i updated that one also.
yes restarted my apache number of time. no use.
tried with your htaccess file no success. i change "RewriteBase /projectname" as my ci is under this folder.
It work like a charm. Thx so much!
RELOAD THE APACHE!!!
0

my .htaccess

RewriteEngine on

RewriteCond $1 !^(index.php)

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

5 Comments

I tried this no success
change httpd.conf, AllowOverride None -> AllowOverride All
It looks like it already is: See <Directory /var/www/> in the asker's code.
@blu: i change "AllowOverride None" to "AllowOverride All" and restarted my apache but no success.
create a new directory, test your web server supports rewrite.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.