Thanks for the response. I am not able to use Apache to redirect since I need to run a MySQL query to determine which file to redirect to. I created a script with just these two lines:
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://domain.com/file");
If I use that exact same script on my other web host the log shows the correct code, but only on Dreamhost does the log show 200 instead of the actual code. I contacted support and this is what they said:
"if I was taking a guess I'd say it's a case where the php file itself is
getting accessed OK and returning a 200. "
I don't understand why it would put a 200 code in the log when it never actually sent one.
Also, I need to make a correction in my original post - .htaccess does actually show the correct code in the log.