2

First of all, i have tried the suggestion specified in here:

I am trying to remove the infamous index.php on the address bar.

This is my current configuration:

In my /etc/apache2/sites-available/my.website.com.conf file i put this:

<Directory /path/to/root/directory/>
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

In my /etc/apache2/apache2.conf file, i put this:

<Directory /path/to/root>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

In my codeigniter root directory (same dir with index.php), i have a .htaccess like this:

<IfModule mod_rewrite>
        RewriteEngine On
        RewriteBase /

        #Removes access to the system folder by users.
        #Additionally this will allow you to create a System.php controller,
        #previously this would not have been possible.
        #'system' can be replaced if you have renamed your system folder.

        RewriteCond %{REQUEST_URI} ^system.*
        RewriteRule ^(.*)$ /index.php?/$1 [L]

        #When your application folder isn't in the system folder
        #This snippet prevents user access to the application folder
        #Submitted by: Fabdrol
        #Rename 'application' to your applications folder name.
        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]
</ifmodule>

<IfModule !mod_rewrite.c>
        # 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
</ifmodule>

And finally, my application/config/config.php:

$config['base_url'] = 'http://my.website.com';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';

When i tested the above config on my local PC (running Ubuntu 14.04) it works just fine. However when i try to replicate the config on my server (running Ubuntu 14.04), somehow it does not work.

Doing this:

  • http://my.website.com/ << Shows default Codeigniter welcome page
  • http://my.website.com/controller_name/ << Shows :

    Not Found The requested URL /login was not found on this server. Apache/2.4.7 (Ubuntu) Server at my.website.com Port 80

  • http://my.website.com/index.php/controller_name << shows the page, however URL to static files (i.e JS/CSS/images) are not properly fetched, since printing this:

      <link rel="stylesheet" href="assets/styles/material-design-icons.css" type="text/css" />
      <link rel="stylesheet" href="assets/styles/font.css" type="text/css" />
      <link rel="stylesheet" href="assets/styles/app.css" type="text/css" />
    

would append index.php when seen from source code inspector.

Am i missing something here? Can someone point me to the right direction?

Thanks.

EDIT #1 Below is my folder structure

Dir Structure

EDIT #2 I can confirm that mod_rewrite is enabled

PHP Info

1

1 Answer 1

2

OK, You mentioned lot of Stack links which related to your question.

Change this settings

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

and add this in .htaccess

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

Note: Some time in localhost index.php will not removed.

and to include your css/js/images

CSS:<link rel="stylesheet" href="<?php echo base_url()?>assets/styles/material-design-icons.css" type="text/css" />
JS : <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/in/easing.js"></script>
Img: <img src="<?php echo base_url()?>assets/image/logo.jpg" alt=""/>

So file structure would be

- application
- assets
  - style
     - material-design-icons.css
     - font.css
     - app.css
  - js
     - easing.js
  - image
     - logo.jpg
- index.php
- .htaccess(Post in my code)

EDIT 01

In config/routes.php

$route['default_controller'] = "";//give default controller name
$route['404_override'] = '';
Sign up to request clarification or add additional context in comments.

3 Comments

I've tried your suggestion, how ever it still doesn't work. I try to call my.website.com/welcome and it still shows the same error message. However, invoking my.website.com shows default CI welcome message.
can I get online link ??

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.