views:

92

answers:

1

I have my PHP files stored under FreeBSD under this directory:

/home/david/public_html/code/php

In my browser, I access them through this URL:

http://192.168.6.7/~david/code/php

And I have an htaccess file to rewrite URLs:

RewriteEngine on
RewriteRule ^test test.php

But when I go to http://192.168.6.7/~david/code/php/test in my browser, I get this error:

Not Found

The requested URL /home/david/public_html/code/php/test.php

As you can see, the rewrite rule is successful in attempting to redirect test to test.php. But for some reason it fails.

I found this in my apache error log file:

File does not exist: /usr/local/www/data/home

Anyone know how to fix this? By the way, if I put this in a web directory and not my home directory, everything works fine.

+4  A: 

Set the base URL path to /~david/code/php/ with RewriteBase:

RewriteBase /~david/code/php/

You should also make clear to set UseDir to public_html. See also Per-user web directories in the Apache manual.

Gumbo
Thank you! It worked. But, I now have to keep track of 2 htaccess files. One for my directory, and one for the production directory. Ideally, apache should have a way to set the RewriteBase to the directory that the .htaccess file is in.
David Barnes
@David Barnes: You could put that directive into your virtual host’s configuration section.
Gumbo