Php – apache/mod_rewrite not configured properly

apache-2.2mod-rewritePHP

Hey, guys. I decided to take a peek at a new MVC PHP framework FuelPHP and I appear to be having some problems with getting Apache (or is this a PHP config issue?) to handle the requests properly. Below is the .htaccess file being used.

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

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

And the error I'm getting is (url being visited is http://localhost/~tyson/hey)

The requested URL /home/tyson/www/public/index.php/hey was not found on this server.

Now this file actually does not exist, but, should be routed to FuelPHP error handling file that is included and works out of the box on other hosts, so I have to assume this is something I've not configured with Apache, an Apache module, or PHP.

I should note that I have done
basic rewrites to ensure that
mod_rewrite is available, but it
should be noted that when I attempted
to use custom 404 pages via re-write
it would only print the path of the
file I was attempting use rather than
executing it but would properly
re-direct to external pages over http.
ie: re-directing to say, Google,
works.

I now strongly believe this is connected. ~tyson/hey will not respond properly but ~tyson/index.php/hey will. Why isn't Apache finding and executing these local files referenced in rewrites properly?

Thanks for reading if you've gotten this far!

edit: for further clarification, he is the relevant portion of my /etc/httpd/conf/httpd.conf file

<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    UserDir enabled tyson

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:
    #
    UserDir www/public

</IfModule>

#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
<Directory /home/*/www/public>
    AllowOverride All
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNOEXEC
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

Best Answer

Did you check if .htaccess is actually working for that directory? You might need to set AllowOverride to All instead of None (default) on that directory in your apache configuration.