How can I remove index.php using Codeigniter on XAMPP?

12,277

Solution 1

Add this line to the REQUEST_FILENAME conditions:

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

Here is the updated .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /Servidor/agentesRainbow/

    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /Servidor/agentesRainbow/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 ^(.*)$ /Servidor/agentesRainbow/index.php/$1 [L]

    #This last condition enables access to the images and css folders, and the robots.txt file
    RewriteCond $1 !^(index\.php|images|css|public)
    RewriteRule ^(.*)$ /Servidor/agentesRainbow/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.
    ErrorDocument 404 /application/errors/404.php
</IfModule>

Hope it solves your problem!

Solution 2

I think the bar at the end of the rewrite condition is causing a problem. At least it broke the rewriting for me.

RewriteCond $1 !^(index\.php|images|css|public|)

Try removing the bar.

RewriteCond $1 !^(index\.php|images|css|public)
Share:
12,277
Bonfocchi
Author by

Bonfocchi

Updated on June 05, 2022

Comments

  • Bonfocchi
    Bonfocchi almost 2 years

    I can't hide Codeigniter index.php on XAMPP 1.7.3

    URL:

    http://localhost/Servidor/agentesRainbow/index.php/agentes/tony
    

    tony is an argument

    My actual .htaccess:

       <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteBase /Servidor/agentesRainbow/
    
            #'system' can be replaced if you have renamed your system folder.
            RewriteCond %{REQUEST_URI} ^system.*
            RewriteRule ^(.*)$ /Servidor/agentesRainbow/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
    
            #This last condition enables access to the images and css folders, and the robots.txt file
           RewriteCond $1 !^(index\.php|images|css|public|)
           RewriteRule ^(.*)$ /Servidor/agentesRainbow/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.
            ErrorDocument 404 /application/errors/404.php
        </IfModule>
    

    My routes.php:

    $route['agentes/(:any)'] = "agentes/index/$1";
    
    $route['default_controller'] = "agentes";
    $route['scaffolding_trigger'] = "";
    

    My config.php:

    $config['base_url'] = "http://localhost/Servidor/agentesRainbow/";
    $config['index_page'] = "";
    $config['uri_protocol'] = "AUTO";
    

    On httpd.conf:

    LoadModule rewrite_module modules/mod_rewrite.so
    
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
    
    <Directory /Servidor/agentesRainbow/>
             Options FollowSymLinks
             AllowOverride All
             Order deny,allow
             Deny from all
    </Directory>