Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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>
share|improve this question
    
Does request for http://localhost/~tyson/index.php work? –  AlexD May 18 '11 at 15:26
    
Yes. It does work. –  t3hb4tman May 18 '11 at 16:43
add comment

2 Answers

up vote 0 down vote accepted

The problem did in fact lie with the .htaccess configuration. By changing:

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

to

RewriteRule ^(.*)$ /~tyson/index.php/$1 [L]

everything now works as intended.

share|improve this answer
    
Ah, the subtlety of having it in a user subdirectory, missed that totally. Apologies also for not reading the question and confusing fuelphp with fuelcms (poor name choices). –  Gavin C May 23 '11 at 22:30
add comment

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.

share|improve this answer
    
Yes, as stated in my OP. –  t3hb4tman May 18 '11 at 13:46
    
I've also added the relevant portion of my httpd.conf file –  t3hb4tman May 18 '11 at 13:52
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.