0

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>
2
  • Does request for http://localhost/~tyson/index.php work?
    – AlexD
    May 18, 2011 at 15:26
  • Yes. It does work.
    – t3hb4tman
    May 18, 2011 at 16:43

2 Answers 2

0

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.

2
  • Yes, as stated in my OP.
    – t3hb4tman
    May 18, 2011 at 13:46
  • I've also added the relevant portion of my httpd.conf file
    – t3hb4tman
    May 18, 2011 at 13:52
0

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.

1
  • 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, 2011 at 22:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .