nickcorin nickcorin - 29 days ago 8
Apache Configuration Question

.htaccess not working for CodeIgniter project on Mac OS

I used CodeIgniter for most of my projects a while back. I'm getting back into the swing of things and hitting some bumps. I'm now developing on Mac OSX Mavericks and using MAMP as my Apache server. Everything seems to be running okay but I can't get rid of the index.php in the URL the whole time. I have added in the .htaccess file into the root of the project. Here's the file:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /ez-recruits/

#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]

</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>


I'm not super clued up about how to make these files so generally I just get them from CodeIgniters website. I'm getting a 404 Error without the index.php in the URL and if I manually type it in, the page will load fine. Also, I was developing in Firefox and I was getting an error saying "Firefox could not understand the address" without the index.php in the URL. I do have mod_rewrite activated on the Apache server. I have removed index.php in my config file for the index page and I have set the base_url to


$config['base_url'] = 'localhost:8888/ez-recruits';


I did some research and found that changing the httpd.conf file helped someone else, so I changed the part of it to this:

<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
</Directory>


But it has changed nothing. Does anybody know what I could be doing wrong or if this is just a Mac problem? Also, with all of these configurations, will I struggle to develop alongside someone else who is developing on a Windows machine?

Thanks in advance.

Answer

Try this for your .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On

    #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 %{ENV:REDIRECT_STATUS} ^$
    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>

Also, you can leave $config['base_url'] blank, which makes life easier if you're working on multiple systems.

Hope this helps!