I wanted to forbid some robots from doing certain things to my websites and decided to add a RewriteRule for that purpose.

The rule works when put in one of my <VirtualHost *:80> tag and looks like this:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} libwww-perl
RewriteRule . - [F,L]

However, I wanted to apply that to all my websites instead of just one of them.

So with the newest version of Apache2 settings, I decided to put that code in the security.conf file. This file is defined under /etc/apache2/conf-available/... (and yes, I have a softlink from the /etc/apache2/conf-enabled/... directory.)

However, if the definition is only in the conf-available/security.conf files, it somehow gets ignored.

From the documentation, it says that these Rewrite* commands all work at server level!

Any idea of what I would be missing?

  • Aside: the pattern . matches a single character, so the RewriteRule won't match requests for the document root. Change this to ^ or .* to match everything.
    – MrWhite
    Nov 16, 2015 at 12:13

1 Answer 1


You need to add RewriteOptions Inherit to each virtual server.


  • 1
    Argh! I see that there is a new InheritDownBefore but I only have 2.4.6 and that one requires 2.4.8. Darn. I was hoping that it could be done without having to edit each virtual server... Too bad. I'll have to wait for the new version of Apache then. Jun 3, 2014 at 0:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.