Why doesn't my htaccess redirect work?
I have setup a simple htaccess redirect which looks like this (this is the whole .htaccess file):
Options +FollowSymLinks
RewriteEngine On
Redirect 301 /something http://something.com/something.php
If I then load the site which contains this .htaccess, ie, myredirectsite.com/something I end up with the following 404:
The requested URL /something was not found on this server.
Apache/2.2.3 (Red Hat) Server at myredirectsite.com Port 80
And the logs:
[Tue Jul 10 14:25:46 2012] [error] [client xx.xx.xxx.xx] File does not exist: /home/sites/scp/something
Something is not a file, and something does not exist. I have assumed I could use Redirect the same as a Rewrite but it looks like the redirect needs to be for a file that actually exists?
I created the file 'something' and it just attempts to load the blank file. No redirect.
What am I missing in getting this working?
Make sure that
AllowOverride All
is set in the httpd.conf file!
But if you have access to the main config file, I would recommend doing the configuration there rather than in an .htaccess file - the .htaccess file will slow the server down. This may not be an issue if you have a very low server load, but it's just as well to use the best practices even on smaller projects.
My httpd.conf file was not configured on this server to AllowOverride in the site directory. It was set to 'none' which I changed to:
AllowOverride All