views:

71

answers:

1

I have a software package placed in the root directory of my website. I'd like all visitors which come from other websites to see the homepage first, before they download. How can I do that without using a script?

+2  A: 

Apache's mod_rewrite can do this. It can test 'HTTP_REFERER' variable and create a redirect.

Example from http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

Description:

Assume we have under http://www.quux-corp.de/~quux/ some pages with inlined GIF graphics. These graphics are nice, so others directly incorporate them via hyperlinks to their pages. We don't like this practice because it adds useless traffic to our server. Solution:

While we cannot 100% protect the images from inclusion, we can at least restrict the cases where the browser sends a HTTP Referer header.

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule .*\.gif$        -                                    [F]

RewriteCond %{HTTP_REFERER}         !^$
RewriteCond %{HTTP_REFERER}         !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.gif$   -                        [F]

Other variant http://articles.sitepoint.com/print/apache-mod_rewrite-examples

RewriteCond %{HTTP_REFERER} !^$  
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]  
RewriteRule \.(gif|jpg|png)$ http://www.example.com/hotlinked.gif [R=301,L]

First line checks if referer is empty. second - if it is not your domain. Third will redirect "bad queries" to "hotlinked.gif"

osgx
Worked great for http://uberstaller.com :RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?uberstaller\.com/.*$ [NC] RewriteRule \.(exe|zip)$ http://uberstaller.com/download_uberstaller.html [R=301,L]I should also mention uploading these instructions as ".htaccess".Thanks!
Sphynx