[thelist] RewriteRule for entire site?

misterhaan misterhaan at track7.org
Wed Aug 16 13:43:54 CDT 2006

I'm trying to use apache mod_rewrite to give some spammers and annoying 
useragents a 403 page, but it appears to only work on requests for pages 
in the root directory.  I have the following in the .htaccess at the web 
root (I have a lot more lines, but you probably don't need to see that):

RewriteEngine on
#some rules not for spammers, etc.
RewriteCond %{HTTP_REFERER} ^http://[^/]*$ [NC,OR]
# more referrer conditions, all with [NC,OR]
# a few ip conditions, with [OR]
# a few user agent conditions, with [NC,OR], except the last one which 
is just [NC]
RewriteRule !(403\.php|\.css|\.png|\.ico) - [F,L]

I'm allowing access to my 403 page as well as the files it references, 
but it also behaves the same if i use this rule instead:
RewriteRule .* - [F,L]

Like I said, it works fine for requests like http://www.example.org/ or 
http://www.example.org/somepage.php, but it gets ignored for requests 
like http://www.example.org/somedir/ or 

Do I really need to have a copy of all these rewrite conditions in an 
.htaccess file in every directory?  I'm also open to suggestions on 
better ways to achieve this, as long as they still use my custom 403 
page -- mod_rewrite is the only way I know of besides doing it through 
php, which I expect would be slower.

More information about the thelist mailing list