How to change .htaccess file to work right in localhost?

Posted by Manolo Salsas on Server Fault See other posts from Server Fault or by Manolo Salsas
Published on 2013-10-29T16:34:39Z Indexed on 2013/10/31 9:57 UTC
Read the original article Hit count: 269

I have this snippet code in my .htaccess file to prevent users from hotlinking the server's images:

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^$ [OR] 
RewriteCond %{HTTP_REFERER} !^http://(www.)?itransformer.es/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|wbmp)$ http://itransformer.es [R,L]

Of course, it is not working in my localhost, but don't know how to achieve it. My guess is that I should change the domain name with any wildcard. Any idea?

Update

I've finally found out the answer thanks to @Chris solution:

RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} ^https?://%{HTTP_HOST}/.*/usuarios/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|wbmp)$ http://%{HTTP_HOST} [R=301,L]

The /usuarios/ directory is because I only want to deny direct access to files inside this directory.

Update2

For some reason, it doesn't work again. Finally I think that I found out a better solution:

RewriteCond %{REQUEST_FILENAME} .*/usuarios/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|wbmp)$ http://%{HTTP_HOST} [R=301,L] 

I say better solution because what I want to deny is direct access to a file (image).

Update3

Well, after a while I discovered above wasn't exactly what I wanted, so the next is definitive:

RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^https?://itransformer.*$ [NC]
RewriteRule /usuarios/.*\.(gif|jpe?g|png|wbmp)$ - [R=404,L]

Just two doubts:

If I change the above to:

RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^https?://%{HTTP_HOST}.*$ [NC]
RewriteRule /usuarios/.*\.(gif|jpe?g|png|wbmp)$ - [R=404,L]

it doesn't work. I don't understand why, because %{HTTP_HOST} is equal to itransformer in my localhost, and it should work.

The second doubt is why is shown the default 404 page and not my custom page (that is shown in all other 404 responses).

© Server Fault or respective owner

Related posts about apache2

Related posts about .htaccess