3

I am trying to remove "index.php" from url in Codeigniter. I know how to remove index.php from base url like this example.com/controller.

But i don't know how to remove "index.php" in sub folder like example.com/folder/index.php/controller

Because i have to different projects in codeigniter. so second project i have uploaded in sub folder.

.htaccess

#original
#RewriteEngine on
#RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ index.php/$1 [L]

#modify
RewriteEngine on

RewriteCond $1 !^(index\.php|resources|robots\.txt)

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

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

RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

The above program for base url. So what i will change in this program it work on sub folder.

5 Answers 5

0

Write this code in your .htaccess file

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
</IfModule>

# END WordPress

Example : example.com/folder/index.php/contorller

after above code no need to write index.php

it's working..

Sign up to request clarification or add additional context in comments.

Comments

0

Update this variable in config.php $config['index_page'] = '';. Remove index.php

1 Comment

This alone will not remove the index.php from your URL, you will need to use some form of mod_rewrite such as a htaccess file to have it properly removed.
0
 `Step:-1  Open the file config.php located in application/config path.  Find and Replace the below code in config.php  file.

// Find the below code

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

// Remove index.php

 $config['index_page'] = ""

Step:-2 Go to your CodeIgniter folder and create .htaccess file.

Path:

  Your_website_folder/
  application/
  assets/
  system/
  user_guide/
  .htaccess <--------- this file
  index.php
  license.txt

Step:-3 Write below code in .htaccess file

 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php/$1 [L]

Step:-4 In some cases the default setting for uri_protocol does not work properly. To solve this issue just open the file config.php located in application/config and then find and replace the code as:

// Find the below code

  $config['uri_protocol'] = "AUTO"

// Replace it as

 $config['uri_protocol'] = "REQUEST_URI" `

Comments

0

Take the exact same steps you did on your folder for example.com to remove index.php from the base url on the example.com/folder folder. That is, edit/create the htaccess, removing index.php from config file, etc.

Comments

0

Quick solution

RewriteEngine On
RewriteCond %{HTTP} off
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

If facing problem

You might have to check if modrewrite is installed and enabled in your apache.

Enable modrewrite

sudo a2enmod rewrite

Also make sure

sudo vi /etc/apache2/apache2.conf

And allow symbolic link

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Restart apache2 and your .htaccess should be working fine.

enter image description here

Read the last step at: https://www.inteligentcomp.com/2017/07/how-to-setup-and-configure-lamp-on-ubuntu-server.html

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.